现在,开始阅读此《GPU Ready Apps Guide》(GPU Ready 应用程序指南)。
AMBER 是专门针对生物分子系统模拟而开发的分子动力学应用程序。AMBER 支持 GPU 加速,可运行显式溶剂 PME 和隐式溶剂 GB 模拟。
最新版本的 AMBER 16 在 NVIDIA GPU 上的运行速度比仅使用 CPU 的系统快 15 倍*,从而使用户运行生物分子模拟的时间从几天缩短到几小时。使用 AMBER 时需要获得加利福尼亚大学的许可证 。
*双 CPU 服务器:英特尔 E5-2690 v4 @ 2.6GHz | 3.5GHz Turbo (Broadwell-EP) | NVIDIA® Tesla® P100 | ECC 关闭 | Autoboost 开启 | PME-JAC_NVE_2fs 数据集
AMBER 可移植到任何安装有 C、C++ 和 Fortran 95 编译器的 Linux 版本上。AMBER 对于 GPU 要求非常高,因此最新的 GPU 能够提供最高的性能。请参阅推荐系统配置一节,以获取更多详细信息。
可通过购买许可证的方式获得 AMBER 的源代码。可以在网站上找到关于此应用程序的详细信息。
以下是编译过程的简要概述
1.下载 AMBER 和 ambertools 源代码档案文件
2.安装依赖项。如需关于在各种 Linux 分发版上安装 AMBER 依赖项的信息,请单击此处。如需更多信息,请参阅官方参考手册。
3.解压缩软件包并设置 AMBERHOME 环境变量(针对 bash 显示在此处)
tar xvjf AmberTools16.tar.bz2tar xvjf Amber16.tar.bz2cd amber16export AMBERHOME=`pwd` # bash、zsh、ksh 等setenv AMBERHOME `pwd` # csh, tcsh
4. 配置 AMBER
构建脚本可能需要更新 AMBER 和/或 ambertools。每次收到提示时,请选择“y”接受相关内容。
./configure -cuda -noX11 gnu # 支持 CUDA,GNU 编译器。/configure -cuda -mpi -noX11 gnu # 支持 CUDA 和 MPI,GNU 编译器
5. 构建 AMBER
make install -j8 # 使用 8 个线程进行编译
如果需要同时运行单个和多个 GPU,则必须针对包含 MPI 和不包含 MPI 的情况执行配置和构建步骤。
./configure -cuda -noX11 gnumake install -j32./configure -cuda -mpi -noX11 gnumake install -j32
要执行仅使用 CPU 的基准运行,还需要构建不支持 CUDA 的二进制文件。
./configure -mpi -noX11 gnumake install -j32
在运行 AMBER 的 GPU 加速版本之前,请为您的 GPU 安装最新的 NVIDIA 显示驱动程序。
运行 AMBER 需要使用“pmemd.cuda”可执行程序。多 GPU 运行需要使用“pmemd.cuda.MPI”可执行程序(请参阅下载和安装说明以获取支持 MPI 的编译相关的信息)。对于多 GPU 运行,GPU 应位于同一物理节点,且所使用的 GPU 需要支持点对点通信才能获得最佳性能。
您还应该下载 AMBER16 基准测试套件,可从基准测试页面免费获取。这里我们假设您已下载基准测试并将其解压缩到名为 $BENCHMARKS 的目录。
建议在运行 AMBER 时将 GPU 加速频率设置为最大值,以获得最佳性能。在本例中,我们为 GPU 0 设置频率,并在第一行上将加速频率用于 Tesla K80,在第二行上将其用于 Tesla M40,在第三行上将其用于 Tesla P100。请注意,Geforce 设备可能没有可修改的加速频率。
nvidia-smi -i 0 -ac 2505,875 # K80nvidia-smi -i 0 -ac 3004,1114 # M40Nvidia-smi -i 0 -ac 715,1328 # P100
用于在单节点系统上运行 AMBER 的常规命令行:
$AMBERHOME/bin/pmemd.cuda -i {input} -o {output file} {options}
在多 GPU 系统上,AMBER 必须按下面指定的内容以 mpirun 运行:
mpirun -np <NP> $AMBERHOME/bin/pmemd.cuda.MPI -i {input} -o {output} {options}
{options}
1. -O:覆盖已存在的输出文件。
2. -o:指定要写入的输出文件的文件名
建议始终检查输出文件的开头,以确保所有 87 个参数都已经正确指定,尤其是 GPU。
{input}
使用下一小节中某个数据库中的相应输入文件(通常为 mdin.GPU)。
示例 1.在单个 GPU 上运行 JAC 生产 NVE(基准页面中的 DHFR (NVE) 2fs):
cd $BENCHMARKS/PME/JAC_production_NVE $AMBERHOME/bin/pmemd.cuda -i mdin.GPU -O -o mdout
示例 2. 在 2 个 GPU 上运行纤维素生产 NPT(全部位于同一节点上):
cd $BENCHMARKS/PME/Cellulose_production_NPTmpirun -np 2 $AMBERHOME/bin/pmemd.cuda.MPI -i mdin.GPU -O -o mdout
示例 3. 在 32 个 CPU 核心上运行纤维素生产 NPT(全部位于同一节点上):
cd $BENCHMARKS/PME/Cellulose_production_NPT mpirun -np 32 $AMBERHOME/bin/pmemd.MPI -i mdin.CPU -O -o mdout
本节演示了所选数据集的 GPU 加速。基准按照递增的原子序号列出。读取输出结果时的品质因数为“纳秒/天”(值越大越好),位于“mdout”文件中输出内容的结尾。最好对所有时间步长进行测量(而不是最后 1000 个步长)。
Typical Production MD NPT with GOOD energy conservation, 2fs.
&cntrl ntx=5, irest=1, ntc=2, ntf=2, tol=0.000001, nstlim=250000, ntpr=2500, ntwx=2500, ntwr=250000, dt=0.002, cut=8., ntt=0, ntb=1, ntp=0, ioutfm=1, / &ewald dsum_tol=0.000001, /
JAC (Joint Amber CHARMM) 生产 NPT 是 TIP3P 水箱中的 DHFR。它是具有 23,588 个原子(包括水)的小型基准之一。该基准使用显式溶剂模型 (PME) 运行。
Typical Production MD NPT with GOOD energy conservation.
&cntrl ntx=5, irest=1, ntc=2, ntf=2, tol=0.000001, nstlim=70000, ntpr=1000, ntwx=1000, ntwr=10000, dt=0.002, cut=8., ntt=0, ntb=1, ntp=0, ioutfm=1, / &ewald dsum_tol=0.000001 /
FactorIX 是模拟凝血因子 IX 的基准。它由包括水在内的 90,906 个原子组成。水建模为显式 TIP3P 溶剂。此基准测试使用显式溶剂模型 (PME) 运行。
Typical Production MD NVT
& cntrl ntx=5, irest=1, ntc=2, ntf=2, nstlim=14000, ntpr=1000, ntwx=1000, ntwr=8000, dt=0.002, cut=8., ntt=1, tautp=10.0, temp0=300.0, ntb=2, ntp=1, barostat=2, ioutfm=1, /
此基准测试模拟纤维素纤维。它是基准测试模拟的较大模型之一,具有 408,609 个原子(包括水)。水建模为显式 TIP3P 求解器。该基准使用显式溶剂模型 (PME) 运行。
本节提供了不同的单节点和多节点系统的预期性能基准测试。
请参阅 Amber 的受支持 GPU 列表。