作者:慕笛
“集谛”是一款内置于阿里云弹性高性能计算(Elastic High Performance Computing,E-HPC)的云上性能监控与分析引擎,支持集群资源利用情况的实时监控和用户作业运行情况的在线分析。对于采用GPU加速的异构计算应用场景,“集谛”除了监控节点host端资源外还能监控GPU device端的资源利用情况,给出GPU利用率、显存利用率和PCI-E数据传输带宽等性能指标随时间的变化,帮助用户更好得了解应用运行状态,指导应用改进。
分子动力学(Molecular Dynamic,MD)模拟是一种基于经典牛顿力学建立分子结构模型,对分子及分子体系的结构和性质进行研究分析的计算机模拟方法,是人类打开微观运动世界的钥匙。作为高性能计算领域的重要研究方向之一,分子动力学模拟在新材料研制、化学工业模拟、生物医药等多个领域被广泛应用,相关研究成果多次入选美国三大工程奖之一的戈登贝尔奖。分子动力学模拟包含了大量分子间相互作用力的计算,计算过程密集且规整,因此非常适合使用CPU向量运算部件和GPU卡进行加速。目前主流的几款分子动力学模拟软件GROMACS、NAMD、LAMMPS均可以采用GPU卡来加速其核心计算过程。下图给出的使用分子动力学模拟方法后得到的生物大分子构型的演变。
对GPU资源的充分利用是分子动力学软件获取理想模拟效率的关键。本文以GROMACS为例,使用“集谛”对其运行时性能特征进行多方位展示,分析当前性能瓶颈,从而对软件性能进行优化。
“集谛”GPU性能监控介绍
节点维度:“集谛”按照用户选取的节点构造出多个坐标平面,每个坐标平面对应展示一个节点的GPU资源利用情况。其中,节点内不同GPU卡的性能数据以时间为横轴展示在同一个坐标平面内。这种节点维度的呈现方式有利于用户对比节点内不同GPU卡间的负载情况。
指标维度:“集谛”根据用户选取的GPU子设备和性能指标构造出多个坐标平面,每个坐标平面对应展示某一GPU子设备&某一性能指标上不同节点的性能表现,方便用户对比节点间的GPU负载情况。
“集谛”指导GROMACS性能优化
本文在ecs.gn5实例(8 core,16 vCPU,120GB内存,2 P100)上运行分子动力学软件GROMACS的GPU版本,并使用“集谛”监控软件执行过程中的系统资源利用情况。
节点维度:
指标维度:
从上图可以看出:
- CPU利用率持续保持在85%以上
- GPU利用率在45%到70%之间,并且波动较大
- GPU显存利用率在25%左右
- GPU设备PCI-E传输带宽基本不超过2GB/s
由此可见,CPU端计算资源接近用满,负载较重;而GPU端计算资源、显存和PCI-E带宽均未达到瓶颈,尚有进一步可用的空间。GROMACS软件本身采用“CPU+GPU”的主从协同计算模式,CPU和GPU任一端的性能瓶颈都会拖慢软件的整体性能。因此为了提升GROMACS的软件执行效率,我们选择将CPU端的PME计算过程进一步offload到GPU端。通过这种方式,我们在减少CPU端计算任务的同时又充分利用了GPU端的计算资源,从而使CPU和GPU两端的计算负载更加均衡。完成该步优化后,我们再次使用“集谛”监控GROMACS执行过程中的系统资源利用情况。
节点维度:
指标维度:
从上图可以看出,在将PME计算过程offload到GPU端之后:
- CPU利用率降到30%~35%之间
- GPU利用率基本稳定在70%以上,并且波动较小
- GPU显存利用率提升到50%以上
- GPU设备PCI-E传输带宽达到3GB/s以上
- 相同任务量下,执行时间降为优化前的50%
由此可见,对于采用“CPU+GPU”主从加速模式的软件,通过平衡CPU端和GPU端的计算负载,能够大幅提升软件的执行效率。
总结
集谛能够从计算、内存、网络、磁盘、加速卡等方面系统地监控集群资源的利用情况并系统地展示给用户,方便用户进行多方位地对比分析,帮助用户迅速定位性能瓶颈,从而为用户应用程序的改进提供指导。