计算化学公社

 找回密码 Forget password
 注册 Register
Views: 155|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] MPI并行的NEP训练

[复制链接 Copy URL]

1245

帖子

1

威望

3846

eV
积分
5111

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 biogon 于 2025-12-26 10:57 编辑

GPUMD中原有的NEP模块没有MPI并行只有CUDA下的单机多卡并行,如果想训练结构很多的NEP力场对于没有单机多卡的用户来说不够快
所以在原有的NEP基础上增加了MPI并行的功能,可以让有很多单卡机器的用户通过MPI并行快速的训练力场
代码可以从我的GPUMD的fork的mpi分支获得,该分支基于目前最新的GPUMD 4.7版本,NEP和qNEP力场都可以用于训练
  1. https://github.com/hsianghualite/GPUMD/tree/mpi
复制代码
下载mpi分支命令
  1. git clone -b mpi https://github.com/hsianghualite/GPUMD.git
复制代码
执行如下命令即可编译mpi并行的NEP可执行文件
  1. make nep_mpi
复制代码
编译要有CUDA > 9.0 版本和基于该CUDA作为后端的 openmpi > 4.0 版本

运行方法(使用前必须保证节点之间能免密码SSH访问)
基于TCP网络纯测试命令,使用n1和n2各两个gpu共4个
  1. mpirun -np 4 --host n1:2,n2:2 --mca coll ^hcoll,han   --mca pml ob1 --mca btl tcp,self,vader   -x PATH -x LD_LIBRARY_PATH   bash -lc 'export CUDA_VISIBLE_DEVICES=$OMPI_COMM_WORLD_LOCAL_RANK; exec  /yourdir/GPUMD/src/nep_mpi'
复制代码
slurm提交脚本(使用TCP网络)
  1. #!/bin/bash
  2. #SBATCH --ntasks=4
  3. #SBATCH --cpus-per-task=2
  4. #SBATCH -p gpu
  5. #SBATCH -w n1,n2
  6. #SBATCH -J nep_mpi

  7. CUDA openmpi 环境变量加载
  8. export OMPI_MCA_coll=^hcoll,han
  9. export OMPI_MCA_pml=ob1
  10. export OMPI_MCA_btl=tcp,self,vader

  11. mpirun /yourdir/GPUMD/src/nep_mpi
复制代码

使用roce/ib网络的脚本
  1. #!/bin/bash
  2. #SBATCH --ntasks=4
  3. #SBATCH --cpus-per-task=2
  4. #SBATCH -p gpu
  5. #SBATCH -w n1,n2
  6. #SBATCH -J nep_mpi

  7. CUDA openmpi 环境变量加载

  8. export OMP_NUM_THREADS=2
  9. export OMPI_MCA_pml=ucx
  10. export OMPI_MCA_osc=ucx

  11. mpirun /yourdir/GPUMD/src/nep_mpi
复制代码

使用CUDA-Aware MPI
  1. #!/bin/bash
  2. #SBATCH --ntasks=4
  3. #SBATCH --cpus-per-task=2
  4. #SBATCH -p gpu
  5. #SBATCH -w n1,n2
  6. #SBATCH -J nep_mpi

  7. CUDA openmpi 环境变量加载

  8. export OMP_NUM_THREADS=2
  9. export OMPI_MCA_pml=ucx
  10. export OMPI_MCA_osc=ucx
  11. export OMPI_MCA_opal_cuda_support=true
  12. export UCX_MEMTYPE_CACHE=n
  13. export UCX_TLS=rc,cuda_copy,cuda_ipc,gdr_copy

  14. mpirun /yourdir/GPUMD/src/nep_mpi
复制代码
PS1:CUDA-Aware MPI编译方法后续会添加
PS2:目前的并行卡数目上限是nep.in中设置的population数目,后续可能会改进
使用过程中出现问题可以回帖或者在github直接提issue



评分 Rate

参与人数
Participants 1
eV +8 收起 理由
Reason
sobereva + 8

查看全部评分 View all ratings

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-1-24 04:39 , Processed in 0.353523 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list