分子动力学模拟在OpenCL框架的GPU上的实现.PDFVIP

  • 29
  • 0
  • 约8.32千字
  • 约 4页
  • 2017-04-08 发布于四川
  • 举报

分子动力学模拟在OpenCL框架的GPU上的实现.PDF

分子动力学模拟在OpenCL框架的GPU上的实现

32 《高性能计算发展与应用》 2011年第一期 总第三十四期 分子动力学模拟在OpenCL框架的GPU上的实现 ? 费辉 张云泉 王可 中科院软件研究所 并行软件与计算科学实验室 北京 100190 feihui.ustc@ 摘要: 分子动力学作为获得液体、固体微观性质的重要计算手段,广泛应用于化学、物理、生 物、医药、材料等众多领域。模拟体系的复杂性和精确性的需求,使得计算量巨大,耗费时间 长。并行计算是加速大规模分子动力学模拟的重要途径。GPU以几百GFlops甚至上TFlops的运 算能力,为分子动力学模拟这样的计算密集型应用提供了新的加速方案。本文提出了oApT- AD算法,并在OpenCL框架的GPU上作了实现。性能统计显示,该算法在OpenCL框架下进行 分子动力学模拟,可以得到良好的性能,同时又将该算法在CUDA框架下做了实现,通过对比 发现,该算法在基于OpenCL框架下的实现性能与基于CUDA框架的实现性能基本相当。 关键词:分子动力学,GPU,OpenCL,CUDA,原子分解法 1. 引言 所谓分子动力学,是指对于原子核和电子所构 成的多系统,用计算机模拟原子核的运动过程,并 从而计算系统的结构和特性,其中每一原子核被视 为在全部其它原子核和电子所提供的经验势场作用 下按牛顿定律运动[1]。分子动力学作为模拟液体、固 体分子性质的常用计算手段,广泛应用于化学、物 理、医药、材料、能源、生物等众多领域当中。分 子动力学模拟能够跟踪分子的运动状态,并能够通 过统计地分析速度、温度等性质阐述理论中的难点, 因此,这种方法日益受到重视。但是模拟的计算能 力一直是制约这方面研究发展的瓶颈所在[2]。分子动 力学模拟的主要特点是计算量庞大,产生这种状况 的原因有以下两个方面[3],一是需要在尺寸很小的分 子尺度上进行分子模拟,模拟的体系日趋复杂;二 是为了能够精确地描述分子的运动状态,需要模拟 的时间步足够的细,这样需要运行较多的时间步长 才能达到良好的模拟效果。IBM 为生物分子学模拟启 动Blue Gene[4]项目,制造大型机系统来满足计算的需 求。文献[5]中实现了分子动力学模拟软件NAMD,用 于在大规模并行计算机上快速模拟大分子体系,通 过Charm++实现了动态负载平衡,能够很容易地扩展 到数百乃至数千个处理器上运行。NAMD还配有分析 辅助软件VMD[6]。 有相关研究表明,分子动力学模拟时,约90%以 上的时间花费在计算分子间的作用力上[7],因此并 行算法主要是针对力的计算进行划分。并行算法主 要有原子分解法、力分解法和空间分解法三种[8]。这 三种算法的主要区别在于它们并行任务划分不同。 原子分解法是将所有原子进行任务划分,力分解 法是将计算粒子受力的矩阵以一定的技巧按块分割 划分,区域分解法是按物理区域划分解进行任务划 分。原子分解法适合于GPU应用,表现在3个方面: 1.GPU支持共享存储结构,原子分解法在计算的时候 适用于共享存储结构的结构,且实现时不会产生读 写冲突。2.利用原子分解法可以达到较好的负载平衡 和可扩展性。3.区域分解法在分子移除网格时,处 理器之间需要交换原子信息,适合于cluster,不适合 GPU进行加速;而对于力分解法,处理器之间依赖 关系比较强,需要处理读写冲突问题,同样不适合 GPU加速。 文献[9]利用了GPU文理内存的特性实现了分子 动力学模拟,文献[10]中采用了原子分解法,实现了 分子动力学在CUDA架构下的加速,文献[2]中采用了 MPI+GPU-MD的并行方案。这些算法的共同点就是 只需要一次从主机到设备的输入数据拷贝和一次从 设备到主机的结果数据拷贝,所有的迭代都在GPU内 完成,但是GPU内部的迭代会出现数据的读写冲突, 致使在GPU内部会出现很多次的同步操作,并且由于 GPU硬件结构的限制,同步操作只能在同一个工作组 33专题:高性能计算技术新一轮的挑战 内完成,导致性能下降。 本文提出基于原子分解法的算法oApT-AD,能 够很好避免数据冲突、线程同步等待问题。考虑到 程序的可移植性问题,在OpenCL框架下做了具体的 实现。 2. 分子动力学相关介绍 在分子动力学中,系统中分子的速度、位移是 通过对牛顿运动方程积分得到的,通过解牛顿第二 定律的微分方程,可以得到原子的具体运动细节。 通常采用有限差分法来求解运动方程。常用的有以 下几种算法[1]:Verlet算法,Velocity-Verlet算法, Leap-frog算法,Gear算法,Beeman算法,Rahman算 法。 本文采用的算法为Leap-frog算法,Leap-frog算 法是Verlet算法的一种变化,与Verlet算法相比计算量 稍

文档评论(0)

1亿VIP精品文档

相关文档