Gromacs-Rocm

前言:AMD目前也在努力改进自己的生态吧,推出了自有ROCm平台(对比CUDA),目前说是说在深度学习方面可以支持caffe、tensorflow以及Pytorch吧,但对于我个人尝试ROCm-Pytorch的感受来说,唉,安装太麻烦了(官网上面说Pytorch版还在开发中)
最近的一个工作是基于Gromacs-ROCm平台的移植,原本Gromacs有OpenCL版本的(将在下文中说明),此外,它还支持CUDA的native GPU acceleration。按照老板的要求,尝试了如何将Gromacs移植到AMD ROCm平台进行评估,无奈个人能力有限,过程痛苦,特此记下这段历程。


Gromacs

  GROMACS 是HPC的典型应用之一,用于研究生物分子体系的分子动力学程序包。它可以用分子动力学、随机动力学或者路径积分方法模拟溶液或晶体中的任意分子,进行分子能量的最小化,分析构象等。它的模拟程序包包含 GROMACS 力场(蛋白质、核苷酸、糖等),研究的范围可以包括玻璃和液晶、到聚合物、晶体和生物分子溶液。GROMACS 是一个功能强大的分子动力学的模拟软件,其在模拟大量分子系统的牛顿运动方面具有极大的优势。

目前Gromacs主要支持下面四种性能改进的方法:
  其中thread-mpi不兼容mpi,因此有了MPI和OpenMP的方案:前者侧重于结点间并行,后者侧重于结点内并行。第四种异构加速,即CPU和GPU共同参与运算。

  Gromacs需要快速计算离散傅里叶变换,其只提供了三种安装选择,分别是FFTW(目前最快)、mkl、以及内置的fftpack(不保证性能),其中fftw提供了单/双精度的选择(在Gromacs中只支持单精度的gpu加速),在这里选择了FFTW。
  FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT。下面是安装步骤,安装根据自己需要可以参考官方教程

安装CPU版

首先是不开启GPU加速的,安装命令如下所示,GMX_GPU设置为OFF

安装OpenCL版

使用A卡的OpenCL版本,安装命令如下所示

测试按照官方的一个教程,将CPU和OpenCL版本进行了一个简单的对比,可以看到gpu还是起到了一定效果的,时间减少了 15 % 15\% 15%

Gromacs-ROCm

Gromacs利用GPU来加速大概是这么一个原理:Gromacs中涉及到三种力的计算,其中Non-bonded力的计算量占主要部分,因此可以将这一计算部分放到GPU上来计算(这里可以查看官网介绍但根据NVIDIA最新的Gromacs测试报告来看,为了进一步提升运算效率,他们已经开始在GPU上并行计算这三个部分了,再来对比AMD的支持= =)。

首先去Github上找是否有已经移植好的,然后我找到了这个,整个项目加上我才两颗星,一尝试果然各种报错。

然后给唯一的项目维护者提了一个issue,于是有了一个船新版本,请看这里,虽然构建成功,但还有很多问题需要共同来解决,这也是开源的意义所在吧
  在添加rocfft依赖库的过程中遇到了一个小问题,ROCm自带的rocm-cmake和已有的cmake工具产生了冲突,卸载rocm-cmake无效后,将cmake版本由最新的3.15.3降至3.14.6后,冲突解决了。原因是ROCm-2.7平台本身存在bug,在以后的2.8版本应该会修复。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务