Bootstrap

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

目录

HOOMD-blue

简介

编译方法

使用方法

HOOMD-blue Python API


HOOMD-blue

简介

HOOMD-blue (Highly Optimized Object-oriented Many-particle Dynamics - Blue Edition,高度优化的面向对象多粒子动力学-蓝版)是一款开源的通用粒子模拟工具包,在CPU和GPU上都能高效运行。作为一个Python包,HOOMD-blue提供给用户很大的灵活性以个性化初始化任务,控制模拟变量以及进行就地分析。 详见官网:HOOMD-blue - Home DTK适配版:https://cancon.hpccube.com:65024/1/main/DTK-23.10_hpcapps-20231120/NFS3.2_CentOS7.6

编译方法

DTK中提供的HOOMD-blue是v3.0.0-beta版,由于HOOMD-blue是一个Python包且依赖于其他Python包,最好安装在conda环境中。
由于HOOMD-blue代码仓库下有一系列git submodules,需要在安装前获取:

git submodule update --init

另外需要对HOOMD-blue中与DTK不匹配的地方进行一些修改:

sed -i 's/HIP_hip_hcc_LIBRARY hip_hcc/HIP_hip_hcc_LIBRARY amdhip64/g' CMake/hoomd/FindCUDALibs.cmake
sed -i 's/HIP_hiprtc_LIBRARY hiprtc/HIP_hiprtc_LIamdhip64/g' CMake/hoomd/FindCUDALibs.cmake
sed -i 's/val.x/Scalar(val.x)/g' hooOPLSDihedralForceCompute.cc
sed -i 's/val.y/Scalar(val.y)/g' hooOPLSDihedralForceCompute.cc
sed -i 's/val.z/Scalar(val.z)/g' hooOPLSDihedralForceCompute.cc
sed -i 's/val.w/Scalar(val.w)/g' hooOPLSDihedralForceCompute.cc

之后可以在安装路径下创建一个conda环境:

conda create -p 安装路径/conda-env
conda activate 安装路径/conda-env
# CMake需要使用3.9版,否则无法正确配置
conda install -c https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge numpy pybind11 eigen cmake=3.9 cereal -y

fftw可以使用conda,yum等安装或通过源码编译安装,如:

yum install fftw-devel -y

依赖DTK的库:

yum install rocm-dev -y
yum install rocfft rocprim rocthrust hipcub roctracer-dev -y

安装配置比较简单:

#使用hpcx-2.4.1
module load mpi/hpcx/2.4.1/gcc-7.3.1

mkdir -p build && cd build
#使用DTK中的Clang编译,使用GPU和MPI
cmake .. \
 -DCMAKE_CXX_COMPILER=${ROCM_PATH}/llvm/bin/clang++ \
 -DCMAKE_C_COMPILER=${ROCM_PATH}/llvm/bin/clang \
 -DENABLE_GPU=ON -DENABLE_MPI=ON \
#编译
make -j 线程数
#安装
make install
#单元测试,已知test_harmonic_improper_force计算不正确
ctest -V -E test_harmonic_improper_force

使用方法

DTK中提供的HOOMD-blue是v3.0.0-beta版,安装在conda环境中。
使用HOOMD-blue可以通过salloc申请节点,使用ssh登录到申请到的节点上,加载conda环境运行python或直接运行conda环境中的python,交互式的运行HOOMD-blue:

salloc -p 可用队列 -N 1 -n 32 --gres=dcu:4
ssh 申请到的节点
#通过environment module加载环境
module load #hoomd-blue
#或直接运行conda环境中的python
/path/to/hoomd/conda-env/bin/python3

也可通过脚本运行:

#!/bin/bash
#SBATCH -J hoomd
#SBATCH -N 1
#SBATCH -n 32
#SBATCH --gres=dcu:4

#通过environment module加载环境变量
module load #hoomd-blue
#或者运行conda环境中的python
#export PATH=/path/to/hoomd/conda-env/bin:PATH

mpirun -n 4 python3 python脚本

HOOMD-blue Python API

下面是官网上的一个简单示例:

import hoomd, hoomd.md
hoomd.context.initialize()
unitcell=hoomd.lattice.sc(a=2.0, type_name='A')
hoomd.init.create_lattice(unitcell=unitcell, n=10)
nl = hoomd.md.nlist.cell()
lj = hoomd.md.pair.lj(r_cut=3.0, nlist=nl)
lj.pair_coeff.set('A', 'A', epsilon=1.0, sigma=1.0)
all = hoomd.group.all();
hoomd.md.integrate.mode_standard(dt=0.005)
hoomd.md.integrate.langevin(group=all, kT=1.2, seed=4)
hoomd.run(10e3)

该python脚本涉及

  • 模拟上下文初始化
  • 模拟盒子创建
  • 模拟相互作用设定
  • 积分器指定
  • 运行模拟(1000步)

HOOMD-blue具体的Python接口请参考 HOOMD-blue 4.8.2 documentation

;