分子动力学软件GROMACS在GPU上的应用(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
57高性能计算应用
分子动力学软件GROMACS在GPU上的应用
寇大治徐磊徐莹
上海超级计算中心上海201203*************.cn
左光宏
中科院上海应用物理研究所上海201800**************.cn
摘要:
伴随着高性能计算的发展,硬件在计算能力和功耗上的矛盾越来越突出,作为试图缓解
这一问题的协处理和众核技术的代表,GPU在最近几年逐渐风靡全球。
而分子动力学计算作
为高性能计算的主要应用领域之一,一直备受人们的关注,GROMACS [1]正是分子动力学软
件的主流代表之一。
本文首先对GROMACS软件的GPU版本作业一些介绍,尤其是其与原
CPU版本的区别做了一些解释。
之后就利用了NVIDIA公司C2050型号GPU 设备和上海超级
计算中心“魔方”超级计算平台,就一些典型的分子动力学体系分别在GPU和CPU上进行了
GROMACS软件的测试和比较,并对计算性能的区别进行了讨论。
I.简介
高性能计算发展到千万亿次时代之后,随着计算能力的提升,硬件功耗也以惊人的速度增长,为了解决能耗问题,人们开始转向协处理器和众核技术的研发,通过增加大量的计算单元和简化控制单元,可以使一些可向量化问题的解决能力得到极大的提高,同时很好的控制了能耗的增加。
在这一思路的指引下,最近若干年,原本应用于图形处理的 GPU设备被高性能业界推向了前台,利用其大量的图形处理单元来向量化的处理计算问题,这一方法得到了一定推广和应用。
GROMACS是分子动力学通用软件包,可以用于模拟包含几百到几百万粒子体系的牛顿运动方程, 特别适用于生物分子,如蛋白质,油脂等有含有大量复杂健作用的体系,同时由于GROMACS在计算非键作用时(这实际上也占了模拟的主要部分相当快,因此也可广泛应用于非生物体系,如大分子聚合物。
关于GROMACS的相关情况已经有过一些研究和测试 [2-3]。
本文将主要围绕GROMACS软件的GPU版本,以及其在GPU和CPU平台上的表现做出比较和评测,以期对该软件的使用有一个更全面的了解。
2.测试环境
1 GPU计算环境:NVIDIA Tesla ™ C2050 Tesla GPU的20系列产品家族基于代号为"Fermi" 的下一代CUDA架构,支持技术与企业计算所“必备”的诸多特性,其中包括C++支持、可实现极高精度与可扩展性的ECC存储器以及7倍于Tesla 10系列 GPU的双精度性能。
Tesla ™ C2050与C2070 GPU旨在重新定义高性能计算并实现超级计算的平民化,表1概述了其各方面的一些特性。
与最新的四核CPU相比,Tesla C2050与C2070计算处理器以十分之一的成本和二十分之一的功耗即可实现同等超级计算性能。
本文测试采用的CUDA toolkit的版本为3.2RC。
表1Tesla ™ C2050与C2070GPU的一些特性
基于新一代Fermi CUDA架构的GPU与基于最新四核CPU的纯CPU系统相比,该GPU以十分之一的成本和二十分之一的功耗即可实现同等的集群性能。
448个CUDA核心每颗GPU最高可实现515Gigaflop双精度峰值性能,从而让一台工作站即可实现Teraflop级甚至更高的性能。
每颗GPU的单精度峰值性能超过1 Teraflop。
58《高性能计算发展与应用》2011年第二期总第三十五期
ECC存储器能够满足工作站计算精度与可靠性方面的关键需求。
能够为存储器中的数据提供保护功能,从而为应用程序增强数据完整性和可靠性。
寄存器文件、L1/L2高速缓存、共享存储器以及DRAM均受ECC的保护。
台式机上的集群性能与一个小型服务器集群相比,配备多颗GPU的单台工作站能够更快地解决大型难题。
每颗GPU最多配备6GB GDDR5存储器更大的数据集能够保存在直接附属于GPU的本地存储器上,从而实现了性能的最大化并减少了数据传输的情况。
NVIDIA ®(英伟达™ 并行DataCache ™ 能够为物理效果解算器、光线追踪以及稀疏矩阵乘法等诸多算法加速,在这些算法中,数据地址事先都是未知的。
每个流式多处理器模块均包含一个可配置的L1高速缓存,所有处理器核心使用统一的L2高速缓存。
NVIDIA ®(英伟达™ GigaThread ™ 引擎通过多项技术实现了吞吐量的最大化,其中包括10倍于上一代架构的高速上下文切换、并发内核执行以及改良的线程块调度。
异步传输计算核心在PCIe总线上传输数据的同时还能够处理其它数据,因而增强了系统性能。
即便是地震处理这类需要大量数据传输的应用程序,也能够通过事先将数据传输至本地存储器的方法来最大限度提升计算效率。
CUDA编程环境受到各种编程语言与 API的广泛支持开发人员无论选择C 语言、C++、OpenCL、DirectCompute还是选择Fortran语言,都能够实现应用程序
的并行机制,进而利用“Fermi”GPU的创新架构。
Microsoft Visual Studio开发人员可以使用NVIDIA ®(英伟达™ Parallel Nsight工具。
高速PCIe Gen 2.0数据传输率实现了主系统与Tesla处理器之间带宽的最大化。
让Tesla系统能够应用于几乎所有具备一条开放式PCIe x16插槽且符合PCIe规范的主系统。
2CPU计算环境:AMD Opteron ™ 8347
CPU上的测试工作主要是在上海超级计算中心魔方超级计算平台上完成的,使用了魔方高性能计算平台的胖节点,采用了Quad-Core AMD Opteron ™ - 8347 / Barcelona处理器,每一个计算节点为八路四核心,单核心频率1.9GHz,L2
2M,L3 2M,bus speed 1000MHz,单节点采用4GB*32根,共计128GB ddr2 667MHz内存。
测试的软件环境包括,操作系统为 SUSE Linux Enterprise Desktop11(x86_64,VERSION= 11,PATCHLEVEL=1(kernel:
2.6.32.12-0.7-default, gcc version 4.
3.4[gcc-4_3-branch revision152973] (SUSE Linux。
同时GROMACS使用了fftw-3.2.2数学库 [4], cmake-2.8.2和openmm2.0。
3.GPU版本的GROMACS对计算的支持情况分子动力学算法(Integrators:
可供选项有:md/md-vv/md-vv-avek,sd/sd1和 bd。
需要指出的是,分子动力学OpenMM库中只提供了velocity-verlet算法,所以在实际的运行过程中, 选项md,md-vv,md-vv-avek没有区别,同样sd与 sd1也没有区别。
另外需要注意的是虽然选项md是可用的,但是对于GPU版本的GROMACS选择了md不再是使用蛙跳算法了。
(注:蛙跳算法是一种优化的分子动力学算法。
在CPU版本的GROMACS 上md对应的是蛙跳算法。
长程相互作用(Long-range interactions:可供选项有:Reaction-Field,Ewald,PME, No-cutoff,Cut-off。
需要使用No-cutoff时,请设置rcoulomb=0和 rvdw=0。
Ewald方法只支持3D几何结构,偶极矩的校正不再支持。
(这个选项不是很常用,一般使用 PME方法
Cut-off方法只支持隐式水模型的模拟。
温度控制(Temperature control:
只在integrator的选项为sd/sd1,bd,md/md-vv/ md-vv-avek的情况支持。
OpenMM库只使用Andersen 热浴算法。
也就是说GPU版本的GROMACS,选用任何tcoupl,都是使用Andersen热浴算法,使用不同的组来分开设置其平衡温度的做法不再支持,而且在使用中需设置tc-grps=System。
力场(Force fields:
支持的力场包括 A M B E R 与 C H A R M M 。
而 GROMOS与OPLS-AA 力场不支持。
且在CHARMM力场中二面角 C M A P 算法也不支持 , 所以在使用 pdb2gmx时,需要使用-nocmap选项。
隐式水模型(Implicit solvent:
只有在库仑相互作用力(即参数coulombtype 设置为reaction-field的情况下才可使用。
对于GB模型,只支持OBC算法,且对于GB模型中的一些参数,也被编译到了程序之中,不能修改。
具体的
59高性能计算应用
参数与其值为:obc alpha=1,obc beta=0.8以及obc gamma=4.85。
局部固定(Constraints:
在OpenMM库中,局部固定由SHAKE,SETTLE与 CCMA结合而实现。
局部控制的精度由SHAKE强度面控制,即由设置参数shake_tol控制。
周期性边界条件 (P e r i o d i c B o u n d a r y Conditions:
只支持正方盒子下的 pbc=xyz与 pbc=no两种情况。
压强控制(Pressure control:
OpenMM使用蒙特卡洛稳压算法。
所有的 pcouple参数都能接受。
模拟退火(Simulated annealing:
不支持。
拉拽算法(Pulling:
不支持。
局部限制(Restraints:
无论是距离、方向、角度还是二面角的限制均暂不支持。
(注:restraint与前面的constraint不同之处是,restraint是将这些值固定在一个范围内,而 constrain是将其固定在某一个值。
自由能计算(Free energy calculations:暂不支持。
空间势能限制(Walls:
不支持。
非平衡分子动力学(Non-equilibrium MD:不支持acc_grps选项。
空间电场(Electric Fields:
不支持。
混合量子力学与分子力学(QMMM:
不支持。
4.测试方法
Gromacs从4.5版本开始支持GPU加速的分子动力学模拟,GPU部分的计算使用了斯坦福大学生物医学计算研究中心(Simbios NIH Center for Biomedical Computation at Stanford的OpenMM库的加速支持, Gromacs和OpenMM两个部分均是开源的。
当前 Gromacs对GPU的计算只能少部分的支持,同时在已经支持的领域内也不是全部都能获得很好的加速效果,例如,本文同时测试了针对GPU有良好加速性能的隐式解法体系和针对GPU加速效果并不是很好的考虑长程相互作用的PME方法体系。
在硬件上,当前版本的Gromacs仅支持NVIDIA公司的GPU硬件,并需要CUDA环境的支持,同时不能支持多GPU卡的并行计算。
本文的测试工作采用了Gromacs4.5.1,并使用了两个典型的 GROMACS GPU测试用例:dhfr-impl-inf和dhfr-solv-PME,前者为隐式解法的体系,因为没有全局的相互作用而有非常好的并行加速效果, 后者为考虑了长程相互作用的PME
方法体系。
测试结果给出平台每天可完成的分子动力学步数(ns/day/纳秒每天为单位,越大越优。
5.测试结果与分析
表2给出了两个计算体系在不同的硬件环境下的性能比较,测试结果的每个数据都是从5次以上的重复测试中选出的最优值,其中CPU上分别采用了从1个到32个线程的测试计算,GPU上分别采用了 ECC校验打开和关闭的测试计算。
另外在图1中分别给出了两个计算体系在不同的计算条件下的计算能力对照柱状图。
表3给出的是两个计算体系在不同的硬件环境下的加速比,对应的在图2中分别给出了两个计算体系在不同的计算条件下的加速对照柱状图。
表2两个计算体系在不同的CPU线程和GPU上的性能比较
ns/day
CPU GPU 1481632ECC/on ECC/off
inf 0.7282.8945.4389.28614.16069.05075.842 PME
0.9364.1307.78314.51324.5259.82510.722
表3两个计算体系在不同的CPU线程和GPU上的加速比
ns/day
CPU GPU 1481632ECC/on ECC/off
inf 13.987.4712.7619.4594.85104.18 PME 14.418.3215.5126.2010.5011.46
60《高性能计算发展与应用》2011年第二期总第三十五期
图1两个计算体系在不同的CPU线程和GPU上的性能对
照柱状图
图2两个计算体系在不同的CPU线程和GPU上的加速对照柱状图
由表2、3和图1、2可以看到两个不同特点的计算体系表现出了不同的计算效果。
正如之前对计算体系的介绍,对于inf体系,因为是隐式解法的体系,没有全局的相互作用,表现出了非常好的并行加速效果,尤其在GPU上表现出非常出众的加速比, 在ECC校验关闭的情况下甚至达到了一百倍以上的加速效果。
而对于PME 体系,其全局通信的计算需求使 GPU上的计算效果表现平平,只表现出十倍的加速效果,这一计算能力只是略优于CPU在8线程的情况。
6.结论
本文就分子动力学软件GROMACS在GPU上的应用做了介绍,到目前为止,与传统的CPU版本相比, GPU版本还有很多特性得不到支持,另外有一些参数的设置甚至和CPU版本有一些差异,这可能会影响到 GROMACS-GPU应用的推广。
另外,本文就两个有代表的计算进行了跨平台的测试,在全局通信较少的体系在GPU上表现出了较好的加速效果,而全局通信较多的体系则表现一般,所以我们建议使用者也要针对不同的研究体系做出一定的取舍和选择。
总之我们应该看到GPU版本所支持的计算特性在逐步的增加,同时其良好的性能和相对较低的硬件功耗和价格,这些都能让我们对GROMACS在 GPU上的应用发展有着良好的期待。
参考文献:
[1]GROMACS:/
[2]王丙强,分子动力学软件GROMACS,高性能计算发展与应用,2007,19(2,39
[3]寇大治,左光宏,nPME对GROMACS性能的影响,高性能计算发展与应用,2010,33(4,65 [2]FFTW:/。