目录
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