HPC应用&分子动力学软件NAMD详细安装使用教程

目录

应用简介

编译安装

测试算例

性能对比

平台参数

算例1 STMV

算例配置文件

运行命令

测试结果


应用简介

NAMD (Nanoscale Molecular Dynamics) 是一款主流的开源分子动力学模拟软件,由美国伊利诺伊大学香槟分校 (UIUC) 理论与计算生物物理研究组 (TCBG) 和并行程序设计实验室 (PPL) 联合开发,曾获得2002 年Gordon Bell Award和2012年 Sidney Fernbach Award。NAMD是建立在并行编程模型Charm++之上的开源分子动力学模拟软件,可以运行在从个人电脑、工作站直到大规模并行的计算机等各种不同类型的计算设备上。借助Charm++提供的消息传递与负载均衡功能,NAMD有效解决了大规模并行计算过程中负载不平衡的问题,实现了良好的可扩展性。同时,NAMD也始终紧跟先进计算硬件设施的发展,不断推出最新计算设备上的移植版本。基于目前最强大的CPU+GPU异构计算机,NAMD已经实现了20亿原子数量级的分子动力学模拟。

编译安装

HIP版NAMD源代码可以从以下仓库下载:

https://cancon.hpccube.com:65024/1/main/DTK-23.10_hpcapps-20231120/NFS3.2_CentOS7.6

首先需要编译安装charm,根据底层通信库的不同,charm可以编译为多种版本。通常单节点内使用时可以编译为multicore版,需要多节点并行且需要使用GPU加速时,可以编译为ucx版。charm编译完成后在编译namd。

multicore版本编译步骤:

进入NAMD顶层目录,按照如下步骤进行安装:

tar -zxvf charm-6.10.2.tar.gz && ln -s charm-v6.10.2/ charm
tar -zxvf fftw-linux-x86_64.tar.gz && mv linux-x86_64/ fftw
tar -zxvf tcl8.5.9-linux-x86_64.tar.gz && mv tcl8.5.9-linux-x86_64 tcl
tar -zxvf tcl8.5.9-linux-x86_64-threaded.tar.gz  && mv tcl8.5.9-linux-x86_64-threaded tcl-threaded
cd charm 
./build charm++ multicore-linux-x86_64 --with-production --enable-error-checking  
cd ..
./config Linux-x86_64-g++ --charm-arch multicore-linux-x86_64 --with-hip --rocm-prefix $ROCM_PATH --hipcub-prefix ${ROCM_PATH}/hipcub --rocprim-prefix ${ROCM_PATH}/rocprim
cd Linux-x86_64-g++/ 
make

ucx版需要ucx、pmix、hpcx。进入NAMD顶层目录:

tar -zxvf charm-6.10.2.tar.gz && ln -s charm-v6.10.2/ charm
tar -zxvf fftw-linux-x86_64.tar.gz && mv linux-x86_64/ fftw
tar -zxvf tcl8.5.9-linux-x86_64.tar.gz && mv tcl8.5.9-linux-x86_64 tcl
tar -zxvf tcl8.5.9-linux-x86_64-threaded.tar.gz  && mv tcl8.5.9-linux-x86_64-threaded tcl-threaded
cd charm 
./build charm++ ucx-linux-x86_64 ompipmix smp --with-production --enable-error-checking  --basedir=${pmix_path} --basedir=${ucx_path} --basedir=${hpcx_path} -j4
cd ..
./config Linux-x86_64-g++ --charm-arch ucx-linux-x86_64-ompipmix-smp --with-hip --rocm-prefix $ROCM_PATH --hipcub-prefix ${ROCM_PATH}/hipcub --rocprim-prefix ${ROCM_PATH}/rocprim
cd Linux-x86_64-g++/ 
make

相关目录需根据实际情况进行修改,make 完成后,Linux-x86_64-g++目录将包含如下目录和文件:

charmrun  colvars  flipbinpdb  flipdcd  inc  lepton  Make.config  Make.depends  Makefile  namd2  namd3  obj  plugins  psfgen  sb  sortreplicas  src

测试算例

实际进行一个分子动力学模拟通常需要手动制定所需研究体系的输入文件。可以参考http://www.ks.uiuc.edu/Training/Tutorials/namd/namd-tutorial-unix-html/index.html从头开始制作一个典型的NAMD算例:

NAMD通常包含一下几种输入文件:

  • 蛋白质数据文件(pdb)
  • 蛋白质结构文件(psf)
  • 力场参数文件
  • 输入配置文件

不过在运行程序阶段,用户直接操作的只有输入配置文件,其他输入文件通过输入配置文件进行指定。

通常使用如下命令发起一个计算任务:

mpirun -np 4 /path/to/namd2 ./f1atpase.namd ++ppn 7 +setcpuaffinity

上述命令通过适用于基于ucx版charm++的namd。mpirun发起4个进程,f1atpase.namd为输入配置文件,其余参数意义分别如下:

  • ++ppn: 指定每个进程使用的线程数

  • +setcpuaffinity:使用CPU线程绑定

HIP版NAMD的功能与CUDA版完全一致,更多命令选项可参见NAMD官方文档:NAMD Git-2022-07-21 User's Guide

针对国产异构计算平台的硬件架构,可以采用如下脚本进行进程绑定,通常可提高NAMD的性能:

bind.sh:

APP="/path/to/namd2 ./f1atpase.namd ++ppn 7 "

lrank=$OMPI_COMM_WORLD_LOCAL_RANK

if [ $lrank -lt 7 ];then
 core=$((lrank+1))
#echo $core
 nnode=$((core/8))
 export HIP_VISIBLE_DEVICES=0
 export UCX_NET_DEVICES=mlx5_${nnode}:1
 export UCX_IB_PCI_BW=mlx5_${nnode}:50Gbs
 numactl --physcpubind=${core} --membind=${nnode} ${APP}
elif [ $lrank -lt 14 ];then
 core=$((lrank+2))
# echo $core
 nnode=$((core/8))
 export HIP_VISIBLE_DEVICES=1
 export UCX_NET_DEVICES=mlx5_${nnode}:1
 export UCX_IB_PCI_BW=mlx5_${nnode}:50Gbs
 numactl --physcpubind=${core} --membind=${nnode} ${APP}
elif [ $lrank -lt 21 ];then
 core=$((lrank+3))
# echo $core
 nnode=$((core/8))
 export HIP_VISIBLE_DEVICES=2
 export UCX_NET_DEVICES=mlx5_${nnode}:1
 export UCX_IB_PCI_BW=mlx5_${nnode}:50Gbs
 numactl --physcpubind=${core} --membind=${nnode} ${APP}
else
 core=$((lrank+4))
# echo $core
 nnode=$((core/8))
 export HIP_VISIBLE_DEVICES=3
 export UCX_NET_DEVICES=mlx5_${nnode}:1
 export UCX_IB_PCI_BW=mlx5_${nnode}:50Gbs
 numactl --physcpubind=${core} --membind=${nnode} ${APP}
fi

使用如下脚本提交上述脚本:

#!/bin/bash
#SBATCH -J NAMD-DCU
#SBATCH -p normal
#SBATCH -N 1
#SBATCH --ntasks-per-node=32
#SBATCH --cpus-per-task=1
#SBATCH --gres=dcu:4
#SBATCH -o %j.loop
#SBATCH -e %j.loop

srun hostname |sort |uniq  |awk '{printf "%s\n",$1}'> hostfile
((num_procs=$SLURM_JOB_NUM_NODES*28))

mpirun -hostfile hostfile -np $num_procs  -N 28 --bind-to none ./bind.sh

上述脚本适用于OpenMPI。其他MPI需修改OMPI_COMM_WORLD_LOCAL_RANK相应的环境变量。

性能对比

使用NAMD 3.0 alpha8版本,分别在DCU、P100、V100和A100平台进行性能对比测试。为减少CPU差异造成的影响,使用all in GPU功能,各平台各算例均使用1个CPU核心+一个GPU卡运行。

平台参数

平台CPU备注
昆山Hygon C86 7185 32-core ProcessorGPU频率 1700+1000
P100Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
V100Hygon C86 7185 32-core Processor甘肃
A100AMD EPYC 7502 32-Core

算例1 STMV

算例特征:包括成键力、非键力、PME等各种作用力,1066628原子。

算例配置文件
#############################################################
## ADJUSTABLE PARAMETERS                                   ##
#############################################################
structure          stmv.psf
coordinates        stmv.pdb


#############################################################
## SIMULATION PARAMETERS                                   ##
#############################################################

# Input
paraTypeCharmm      on
parameters          par_all27_prot_na.inp
temperature         298


# Force-Field Parameters
exclude             scaled1-4
1-4scaling          1.0
cutoff              12.
switching           on
switchdist          10.
pairlistdist        13.5


# Integrator Parameters
timestep            1.0
nonbondedFreq       1
fullElectFrequency  4  
stepspercycle       20


# Constant Temperature Control
langevin            on    ;# do langevin dynamics
langevinDamping     5     ;# damping coefficient (gamma) of 5/ps
langevinTemp        298
langevinHydrogen    off    ;# don't couple langevin bath to hydrogens


# Constant Pressure Control (variable volume)
useGroupPressure      yes ;# needed for rigidBonds
useFlexibleCell       no
useConstantArea       no

langevinPiston        on
langevinPistonTarget  1.01325 ;#  in bar -> 1 atm
langevinPistonPeriod  100.
langevinPistonDecay   50.
langevinPistonTemp    298

cellBasisVector1     216.832    0.   0.
cellBasisVector2     0.   216.832    0.
cellBasisVector3     0.    0   216.832
cellOrigin           0.    0.   0. 

PME                  on
PMEGridSizeX         216
PMEGridSizeY         216
PMEGridSizeZ         216

# Output
outputName          /usr/tmp/stmv-output

outputEnergies      20
outputTiming        20

numsteps            10000
CUDASOAintegrate on
margin 4
运行命令
namd3 ./stmv.namd3 +p 1 +setcpuaffinity +devices 0
测试结果
平台算例整体性能(walltime / s)V100的相对性能/ %
昆山332.19381764.26
P100312.83203168.24
V100213.474976100
A100208.925613102.18
  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值