服务器 频道

HPC系统优化 按应用特征分析对症下药

  【IT168 导购】了解高性能计算系统的朋友知道,在系统测试与选型过程中,往往要考虑很多指标,包括CPU主频、缓存大小、核的数量、QPI数量与带宽、内存主频与容量、存储和文件系统、网络、加速技术等。而且根据应用不同,对于这些指标可能有不同的侧重,比如有的应用是浮点计算密集型有的是I/O密集型,有的则需要大内存。

  6月24日,在2011年英特尔高性能计算研讨会上,英特尔数据中心事业部亚太和中国区高性能计算/工作站方案架构师何万青博士,以及中国石油东方地球物理公司物探技术研究中心副总工程师陈维分别从不同角度,分析了高性能计算应用特征分析与相关的测试选型经验。

  随着高性能计算软硬件技术和应用的发展,CPU的计算性能越来越强,而存储和I/O成为新的瓶颈。为此,英特尔今年特别提出了“平衡计算”的概念,建议用户基于自身的应用需求特征,通过一系列测试工具来对HPC系统进行精细化的研究分析,找到可以调整和优化的部分,然后通过“硬件升级、软件性能调优、应用扩展”等不同方法,来提高系统的整体性能,达到硬件系统与应用之间的平衡。

  比如,针对高向量化的应用,主要关注单个线程的CPI、缓存命中率、浮点计算的向量化比例、内存带宽等因素,需要CPU的内核足够强大,如英特尔的至强处理器;针对大规模多线程并行的应用,主要关心多进程通信、同步、并发度、扩展性等问题,可以通过数量众多的小核来运行,如英特尔的MIC众核产品;而针对I/O密集型应用,需要重点关注的是磁盘写、网络带宽和延迟等指标,可以通过SSD固态存储或万兆以太网技术来优化。

HPC系统优化 按应用特征分析对症下药
▲英特尔数据中心事业部亚太和中国区高性能计算/工作站方案架构师何万青博士

  “值得注意的是,上述这些指标之间并不是截然分开,而是相互影响的。比如CPU内核数增加了,但如果不同时相应地增加内存通道和内存带宽,每个核所能获取的内存资源、I/O也会成为瓶颈。”何万青也指出。

  那么,在实际应用中,用户怎样根据应用进行系统选型与调优呢?

  何万青介绍说,一般的应用特征分析流程是,如果系统性能不能满足应用需求,则可以按照“先硬件升级,后性能调优”的顺序来考虑,如果这些方法都没有奏效,很可能就是应用本身的问题,比如有些应用数据之间的依赖性特别强,需要重构和扩展应用。

  在研讨会上,何万青介绍了多种可以帮助用户进行应用特征分析的软件工具,比如并行科技的Pratune可以动态显示多个环境变量在运行时的状况,包括CPU、内存、网络和磁盘读写;英特尔最近发布的Cluster Studio增加了一个重要的功能,可以把应用花费在同步和负载均衡上的时间分开,其好处就是可以按每一函数进行统计,看其时间是消耗在等待上,还是消耗在真正的数据交互上;英特尔的Parallel Studio,其中Composer XE编译工具可以帮助用户在Linux或Windows环境下快速生成并行代码,VTune Amplifier XE可以进行性能分析,以优化程序性能和扩展性,Inspector XE可以对内存和线程进行查错,减少多线程应用中的出错机率,保证应用的可靠性。

  英特尔针对石油勘探领域里的PSTM、PSDM、GeoBench和RTM应用,分别进行了CPI、向量化比例、内存带宽(GB/s)和扩展效率的测试。测试表明,这些不同的应用对性能的要求各不相同,有的强调主频,有的依赖内存带宽,有的磁盘读写很频繁,因此,只有通过详细的应用特征分析,才能对症下药,从而更有效地提高应用的性能。

  东方地球物理公司物探技术研究中心的陈维则进一步介绍了GeoEast系统与应用程序的性能优化案例。GeoEast地震数据处理解释一体化系统是我国自主开发的石油油气勘探的主流软件。

HPC系统优化 按应用特征分析对症下药
▲中国石油东方地球物理公司物探技术研究中心副总工程师陈维

  “在做系统优化时,使用合适的工具可帮助更快地定位系统瓶颈,更好地了解系统运行规律,使优化工作更有针对性。”陈维介绍说,系统运行瓶颈分析主要包括模块优化、I/O优化、数据库优化等几个方面,常用的工具包括编译器、对MPI并行程序进行瓶颈分析的TraceCollector、对程序运行热点代码进行分析的VTune、ThreadChecker以及并行科技的Paratune。

  他举例谈到,英特尔的SSE技术在以浮点计算为主的地震数据处理中具有非常好的应用效果,通过一个周期内4个浮点数的操作,能够使应用程序运行效率提升达3倍之多。对于叠前/叠后偏移、叠前去噪、叠前反演等计算量非常大的模块,可以使用MPI及多线程技术来提升性能和运行效率;针对I/O瓶颈,主要通过增加网络带宽来解决,如使用万兆以太网或Inifiband,同时提高文件系统的并发数据访问效率,以及地震数据的并发处理能力;针对计算密集型应用,则主要通过增加CPU核数,提高CPU并行计算能力,以及使用GPU或MIC众核技术来解决。

0
相关文章