IT号外之HPC应用指南:实现最优化

在上一篇IT号外文章“超算选型必备六招”中,我们已经介绍了HPC系统服务器选型中需要关注的一些问题,不过,对于一个打算用好HPC技术的用户来说,这只是万里长征第一步,接下来,他们还将面临诸多HPC系统实际应用和优化中的挑战,而要破解这些难题,用户首先要确立的,就是以应用为本的思想。

所谓以应用为本,就是说用户必须要客观地分析自己运行的HPC应用的特征,而后决定如何调整HPC系统硬件配置来满足它对性能的需求,以及如何对它进行调优,确保它能充分发挥硬件的潜能。

不难看出,要根据这一原则对HPC系统硬件和应用进行调优,首先要做的,就是分析和确定自己应用的特征,这就好比要为人定制一套衣服,就首先要精准测量他的体形指标,还要全面了解他对布料质地、颜色,乃至钮扣外形的需求一样。

了解和分析你的HPC应用

众所周知,HPC应用开放的目标,一般都是要通过计算来解决某个特定的问题,但因为问题的差异,针对它们的应用所需要的计算特性也不一样,总的来说,可以分为以下三种类型:
一、多媒体运算——主要使用整型和双精度运算。例如用于图形图像处理和三维图像生成的HPC应用就属于这种类型。它对HPC节点的多媒体计算功能要求很高,而英特尔至强5500集成的SSE系列指令集及相应的浮点单元设计在处理这类应用中表现就非常出色;

二、科学计算——主要使用浮点运算功能,这也是目前HPC系统的最主要应用领域。像天气预报和石油勘探等HPC应用都属于这一类。

三、数据库应用——主要依仗逻辑计算和I/O操作的性能。目前数据库集群系统和网格数据库系统就属于这类应用。它需要计算节点有很强的I/O处理能力,同时,整个HPC系统也要具备足够的外接存储空间。

根据以上信息确定常用应用所属的类型后,用户接下来还要对它的具体特征进行分析,例如它是更看重系统的浮点运算性能、内存子系统性能,I/O性能、以及系统各节点之间互联的性能,这就需要用户应用专业的技术手段对其进行应用特征分析了。分析的结果,其实就是用户对系统硬件配置进行进一步优化的基础和准绳。而值得一提的是,这种分析用户可以自行操作,也可以求助于专业的HPC领域厂商,例如英特尔的相关技术支持团队,就为不少重要的HPC用户提供了这种支持和服务。

HPC系统配置优化要全盘考虑

通过细致的分析,相信许多HPC用户已经能对自身应用的计算需求有了更为清晰的认识。那么接下来,就让我们看看应该如何针对它们需求,优化和提升英特尔至强5500平台的系统的性能表现吧。

同样,在调整和优化硬件配置之前,用户也有必须通过各种测试评估手段摸清它的特性,例如用Cycle统计、CPI值、内存访问、缓存效率、NUMA、SMT、IO粒度/延迟、MPI粒度/扩展性等方面的分析手段来评价HPC平台,并以性能特征雷达图来综合比较不同处理器对应用的适用性。

在至强5500上,英特尔采用了SSE4.2指令集,内置DDR3内存控制器、QPI等先进技术,它们或能可加速字符和文本处理器、搜索、及在大型数据库中搜索数据的速度,支持新的通信领域的指令,或可以强化内存子系统性能,或者可以实现较强在系统I/O带宽,而且它们带来的这些潜力,只要用户的应用支持即可产生效用,而另一些至强5500处理器的特性,例如超线程技术,睿频技术、NUMA特性等,则需要用户视需求自行激活和关闭。例如NUMA特性开启后可以提升大部分HPC应用的性能,但在操作系统开多线程的情况下,关闭它反而有助于防止这些线程的内存分配导致不平衡的内存访问分布的情况。

相对来说,睿频技术和超线程技术的适用性更强一些,前者无论是运行多线程应用还是单线程应用都能发挥效力,而且特别适用于计算密集型的应用,后者则能在运行多线程应用时实现最佳的效率。

当然,要优化至强5500节点在HPC应用中的表现,用户优化的方向还不能仅仅限于处理器,例如在I/O方面,要提高MPI网络节点通信速度.最高MPI地址就应设置得较小。同时,单个节点的节点间进程数越少越好,最好是一个。另外,由于越来越多的应用受限于I/O,存储系统正起着越来越重要的作用,此时,磁盘阵列(RAID)就是一种提供高性能I/O的最常见存储设备,所以在存储方面,多盘最好作成RAID,以保证I/O并行。

软件调优层层推进

除将HPC系统硬件配置调为最优化外,HPC用户要想获得最好的应用效果,最好不要忽视其应用软件的调优。其实早在2005 年3月的时候,C++大师 Herb Sutter 在 《Dr.Dobb’s Journal》上就发表了《免费午餐已经结束》一文。在他看来,现在的程序员对效率、伸缩性、吞吐量等一系列性能指标相当忽视,很多性能问题都仰仗越来越快的处理器来解决。但处理器的性能在不久的将来,很有可能会达到一定的极限。因此越来越多的应用程序将不得不直面性能问题,而解决这些问题的办法就是采用并发编程技术。

显而易见,采用针对多核多线程平台的并行开放方案,能有效提高性能,但如果考虑不全面,如忽略带宽、数据竞争及数据同步不当等因素,效率反而会降低,应用软件执行的速度也会越来越慢。

除了走向并行化,HPC的软件调优还涉及了很多其他方面的内容,因为软件优化本身是一个贯穿整个软件开发周期,从开始设计到最终完成一直进行的连续迭代过程。同样重要的是,在80/20原则指导下要知道何时适可而止,以及由算法特性决定的理论并行上限。此外,还有一点对于软件调优至关重要,那就是用户和软件开发商要在优化前,找出其性能瓶颈所在。正如最伟大的 C 语言大师 Rob Pike 所说:“瓶颈经常出现在意想不到的地方,如果你无法断定程序会在什么地方耗费运行时间,那就别急于胡乱找个地方去修改代码,除非你已经证实那儿就是瓶颈所在。”

对于HPC应用的调优,英特尔公司通过为客户提供相关的技术支持,也积累了一些经验和心得。例如它一直强调用户在部署和优化HPC系统性能的时候,必须遵循从系统到应用再到微架构的顺序,在将应用之外的系统影响调试到最优状态后,才能开始考虑应用的优化。而在对应用本身进行优化的时候,也不能急于进入模型算法以及代码级的调整,如要加强并行性,也是要从程序的实现上从进程级到线程级逐步提高并行性能。

除了一些类似的经验可供参考,英特尔的软件调优工具,如Parallel Studio也可以为用户带来实实在在的帮助,它由一组完整的工具产品组成,包括高性能编译器,VTune™ 可视化性能分析器,高性能函数库,多线程工具和应用于高性能计算的集群工具及工具包等等。这些软件产品能帮助用户调优高性能计算系统上运行的中间件和应用软件。目前,英特尔这套软件产品已被成功应用于全球很多知名的软件公司、HPC中心及实验室内,并且发挥着越来越重要的作用。

从上面对系统和应用优化的细节中,再加上此前IT号外文章对至强5500在HPC领域应用价值的描述,我们都可以很清晰地看到英特尔为用户所想,心系用户实际应用的创新理念,而在未来,这一理念还将驱动它为广大HPC用户带来更多值得关注的专业化产品、技术和解决方案。在下一篇IT号外文章中,我们就将对英特尔未来相关的创新路线图进行详细介绍,敬请关注。