五步提速高性能计算分子动力学模拟

  “大自然并不友善”---在纪录世界各地瘟疫爆发过程的《逼近的瘟疫》一书中曾这样提过。埃博拉、HIV、沙拉……这些病毒我们曾谈之色变,地球在孕育生命的同时,危险也在悄悄潜伏,人类需要在病毒面前尽快找出可以攻克的药物。分子动力学模拟被广泛的应用在现代药物开发设计中,常被称为人类战胜病毒的“武器”。

  想要了解生命活动过程并进行针对性的药物设计,仅仅知道病毒的基因序列是不够的,折叠成三维立体构像的活性蛋白质及相关复合物才是关键,通过研究和分析相关蛋白质,找到可以和药物分子有特异性相互作用的靶点,才能最终成功开发出可以治疗这项疾病的药物。

  分子动力学模拟可以通过计算原子之间的相互作用,求解牛顿方程,来模拟体系中原子和分子的运动,它所产生的丰富构像是解释生命活动现象、设计药物分子所不可或缺的重要手段。

  图一:药物设计开发过程(图片来源于Nature)

  分子动力学模拟对高性能计算的需求

  在分子动力学模拟中,一般需要模拟微秒级或毫秒级的病毒或肿瘤蛋白折叠过程才能积累到足够的样本量,因此必须要用到高性能计算来进行分子动力学模拟。从下图我们可以看出分子动力学模拟对高性能计算的需求,美国俄亥俄州超算中心奥克利超级计算机的数据显示Gromacs和NAMD两大分子动力学模拟应用已经占到了其运行机时的25%。

  图二:奥克利超级计算机机时占用情况

  从理论入手进行分子动力学模拟优化

  但是,计算过程中各节点的间的通讯、负责均衡等问题都会对高性能计算在分子动力学模拟中的应用产生影响。那么,分子动力学模拟程序应该如何优化和加速呢?我们可以先看一下它的理论基础。

  在分子动力学模拟中,体系原子的一系列位移是通过对牛顿运动方程积分得到的,其结果是一条运动轨迹,它表明了系统内原子的位置与速度如何随时间而发生变化。通过解牛顿第二定律的微分方程,可以获得原子的运动轨迹,为了得到原子的运动轨迹,可以采用有限差分法来求解运动方程。有限差分法的基本思想就是将积分分成很多小步,每一小步的时间固定为 δt。用有限差分解运动方程有许多方法, 比较常见的有Leap-frog 算法和Velocity-Verlet 算法等。

  实际案例:5步详解分子动力学模拟优化

  下面,我们以一个25万原子数的体系为例子,借助浪潮自主研发的“天眼”高性能应用特征分析系统(简称浪潮天眼),来分析Gromacs(5.0版本)和NAMD(2.6版本)两个典型的分子动力学应用在运行同一算例时的运行特征。

  该测试集群采用了浪潮NF5440M4刀片节点,单节点处理性能近1万亿次,支持AVX2.0指令集,单节点内存容量64GB DDR4,且充分发挥了“四通道内存”及“DDR4频率优势”,网络方面采用了国内领先的InfiniBand技术,网络带宽高达 56Gb/s。本次测试共计采用96计算核心。

  CPU资源使用情况

  下面两个图分别是Gromacs运行该算例时对某一个计算节点的CPU使用情况,和对应的CPI值,由于Gromacs运行过程中特征一致,因此我们截取了约25mins时间段内的数据进行分析。由于NAMD的特征和下图基本一致,在此处略去。

  图三:浪潮天眼监测的Gromacs CPU资源使用情况

  图四:浪潮天眼监测的CPI数据情况

  从图三种可以看出CPU的使用率一直维持在100%,表明Gromacs和NAMD是计算密集型,而在图四上,可以看出其CPI数据维持在0.5左右,远低于1,因此进一步推断出Gromacs和NAMD应用具体属于浮点计算密集型。

  对于浮点计算密集型的程序,主流优化的思路就是借助于CPU的单指令多任务(SIMD)指令集,特别是AVX和AVX2指令集。下图给出了几个常见的分子动力学模拟软件在E5-2600V3平台上使用AVX指令集和不使用AVX指令集时候的性能对比。