现在,开始阅读此《GPU Ready Apps Guide》(GPU Ready 应用程序指南)。
NAMD (NAnoscale Molecular Dynamics) 是一款产品级分子动力学应用程序,专为实现大型生物分子系统的高性能模拟而设计。NAMD 由伊利诺伊大学香槟分校 (UIUC) 开发,其使用的二进制文件和源代码为免费分发。
与仅使用 CPU 的系统*相比,最新版本 NAMD 2.11 在 NVIDIA GPU 上的运行速度通常可提升 7 倍,从而使用户运行分子动力学模拟的时间从几天缩短到几小时。它比 NAMD 2.10 的速度最高提升 2 倍,这不仅可帮助用户节省硬件成本,而且可显著加速科学发现。
*双 CPU 服务器,英特尔 E5-2698 v3@2.3GHz,NVIDIA Tesla K80(关闭 ECC),Autoboost 开启;STMV 数据集
NAMD 可以移植到拥有最新 C++ 编辑器的任何并行平台。预编译的 GPU 加速 NAMD 2.11 二进制文件可下载至 Windows、Mac OS X 和 Linux。NAMD 同时使用 GPU 和 CPU,因此我们建议使用相对较新的 CPU 实现最佳 NAMD 应用程序性能。
以下是编译过程的简要概述
1.下载 NAMD 源代码。
2. 解压缩软件包和 Charm++
tar xf NAMD_2.11_Source.tar.gz
cd NAMD_2.11_Source
tar xf charm-6.7.0.tar
3.下载并安装 TCL 和 FFTW。
请参阅发行说明以了解这些库的相应版本。
wget http://www.ks.uiuc.edu/Research/namd/libraries/fftw-linux-x86_64.tar.gz
wget http://www.ks.uiuc.edu/Research/namd/libraries/tcl8.5.9-linux-x86_64.tar.gz
wget http://www.ks.uiuc.edu/Research/namd/libraries/tcl8.5.9-linux-x86_64-threaded.tar.gz
tar xzf fftw-linux-x86_64.tar.gz
mv linux-x86_64 fftw
tar xzf tcl*-linux-x86_64.tar.gz
tar xzf tcl*-linux-x86_64-threaded.tar.gz
mv tcl*-linux-x86_64 tcl
mv tcl*-linux-x86_64-threaded tcl-threaded
4.构建 Charm++
构建脚本具有交互模式,您还可以按照以下所述内容在命令行中指定选项。
cd charm-6.7.0
./build charm++ {arch} {C compiler} {Fortran compiler} {other options}
对于 {arch},必须使用以下选项之一:“verbs-linux-x86_64”用于多节点配置,“multicore-linux64”用于单节点系统。其他选项并非必须,但建议使用它们以获得最佳性能:“smp”可以将 SMP 用于多节点构建(单击此处以获取更多详细信息),“--with-production”可以使用生产级别优化。
示例 1. 用于多节点配置的 Charm++ 构建,将英特尔编译器和 SMP 与所有生产优化结合使用:
./build charm++ verbs-linux-x86_64 icc smp --with-production
示例 2. 用于单节点配置的 Charm++构建,将英特尔编译器与所有生产优化结合使用。
./build charm++ multicore-linux64 icc --with-production
5.构建 NAMD。
确保您位于主 NAMD 目录中,然后配置并运行 make:
./config {namd-arch} --charm-arch {charm-arch} {opts}
cd {namd-arch}
make -j4
对于 {namd-arch},我们建议使用“Linux-x86_64-icc”,{charm-arch} 应与您构建 Charm++ 时使用的 arch 一致,{opts} 应设置为“--with-cuda”以启用 GPU 加速,仅 CPU 构建中应设置为“--without-cuda”。可以使用 .[comment] 来扩展构建目录,例如Linux-x86_64.cuda。这对于管理 NAMD 的不同构建很有帮助。请注意,扩展没有任何含义,因此除非您还指定了“--with-cuda”,否则“./config Linux-x86_64.cuda”将不会成为 CUDA 构建。
用于 CUDA 构建的可选标志:
a.--cuda-prefix 可用于设置 CUDA 工具包的正确路径;
b.--cuda-gencode 允许您添加不同的 GPU 计算架构。
示例 1.单节点、带 GPU 加速和特定 CUDA 路径、x86_64 架构、使用 Intel 编译器的 NAMD 构建:
./config Linux-x86_64-icc --charm-arch multicore-linux64-icc --with-cuda --cuda-prefix /usr/local/cuda
示例 2. 多节点、带 GPU 加速和特定 CUDA 路径、x86_64 架构、使用 Intel 编译器的 NAMD 构建:
./config Linux-x86_64-icc --charm-arch verbs-linux-x86_64-smp-icc --with-cuda --cuda-prefix /usr/local/cuda
示例 3. 多节点、不带 GPU 加速、x86_64 架构、使用 Intel 编译器的 NAMD 构建:
./config Linux-x86_64-icc --charm-arch verbs-linux-x86_64-smp-icc
在运行 NAMD 的 GPU 加速版本之前,请为您的 GPU 安装最新的 NVIDIA 显示驱动程序。要运行 NAMD,您需要“namd2”可执行程序,而对于多节点运行,您还需要 charmrun 可执行程序。确保按照以下所述内容指定 CPU 相关性选项。
用于在单节点系统上运行 NAMD 的常规命令行:
namd2 {namdOpts} {inputFile}
在多节点系统上,必须使用 charmrun 运行 NAMD,如下所示:
charmrun {charmOpts} namd2 {namdOpts} {inputFile}
{charmOpts}
{namdOpts}
我们建议始终在 NAMD 中检查启动消息,以确保正确设置了这些选项。此外,++verbose 选项可以为使用 charmrun 的运行提供更详细的执行输出。运行主要或其他系统工具可以帮助您确保获取所请求的线程映射。
./namd2 +p 20 +devices 0,1 apoa1.namd
示例 2. 在 2 个节点(其中每个节点具有 2 个 GPU、2 个 CPU(核心数为 20)以及 SMP NAMD 构建)上运行 STMV(请注意,我们启动 4 个进程,每个进程控制 1 个 GPU):
charmrun ++p 36 ++ppn 9 ./namd2 ++nodelist $NAMD_NODELIST +setcpuaffinity +pemap 1-9,11-19 +commap 0,10 +devices 0,1 stmv.namd
请注意,默认情况下,“rsh”命令用于在节点列表文件中指定的每个节点上启动 namd2。可以通过 CONV_RSH 环境变量更改此值,即使用 ssh(而非 rsh)来运行 "export CONV_RSH=ssh"(请参阅 NAMD 发现说明以获得详细信息)。
本节演示了所选数据集的 GPU 加速。请注意,您可能需要更新输入文件,以减少输出能量/定时频率。基准按照递增的原子序号列出。建议在配备多个 GPU 的系统上运行 SMTV 等大型测试用例。
载脂蛋白 A1 (ApoA1) 是血液中高密度脂蛋白 (HDL) 的主要蛋白质成分,在脂类代谢中起特殊作用。ApoA1 基准测试由 92,224 个原子组成,多年以来一直是标准的 NAMD 跨平台基准测试。
ATP 合成酶是一种酶,用于合成细胞中常见的分子能量单元,即三磷酸腺苷 (ATP)。F1-ATPase 基准测试是 ATP 合成酶的 F1 子单元的模型。
卫星烟草花叶病毒 (STMV) 是一种小型二十面体植物病毒,它会使烟草花叶病毒 (TMV) 的感染症状恶化。SMTV 是研究分子动力学的绝佳候选者,因为在病毒中它相对较小,在工作站或小型服务器上可以使用传统分子动力学模拟的对象中处于中高级别。
品质因数为“纳秒/天”(值越大越好),但在日志中输出为“天/纳秒”(值越小越好)。请注意,大多数分子动力学用户都关注“天/纳秒”的反转值,即“纳秒/天”。建议将此值的所有实例的平均值用于基准测试目的;可以在相应的 *.namd 输入文件中控制输出频率。由于初始负载均衡,应忽略“初始时间:”输出,以支持随后的“基准测试时间:”输出。
请参阅下面连接到 4xEDR InfiniBand 的 1-4 个节点的不同系统配置(配备双插槽 CPU 和 NVIDIA Tesla 板)的参考结果。