计算化学公社

标题: 求助:如何用CP2K psmp版实现跨节点? [打印本页]

作者
Author:
rugals    时间: 2023-8-25 11:19
标题: 求助:如何用CP2K psmp版实现跨节点?
如题
两个节点,单节点CPU是AMD EPYC 7452,64核,内存2TB。
想用CP2K 2023.1 psmp版实现跨节点运行(杂化泛函计算)。
一共128核,设置成16个MPI,每个下属8个OpenMPI。
inp文件内设置每个MPI的ERI存储上限为230GB
提交sh脚本如下:

#!/bin/bash
#SBATCH -p amd_2T
#SBATCH -N 2
#SBATCH -n 128
source /public1/soft/modules/module.sh
module load cp2k/2023.1-openmpi4.1.1-gcc7.3.0
mpirun -np 16 -x OMP_NUM_THREADS=8 cp2k.psmp -i xxxx.inp

但是实测发现只有一个节点在运行,另一个节点基本空闲。
内存不够,跑了三个小时就内存满了,报如下错:(没有举牌的小人)

Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that process rank 13 with PID 0 on node n1715 exited on signal 9 (Killed).
--------------------------------------------------------------------------

请问这种情况如何实现CP2K MPI和OPENMPI的跨节点运行?

作者
Author:
abin    时间: 2023-8-25 12:11
集群是你做的吗?
如果是,检查一下必要的设定。

或者,你先用srun试试,多机器跑,正常吗?

srun -N 2 -n 128 XXX

具体翻一下手册吧,指令我记不清楚了。


作者
Author:
rugals    时间: 2023-8-25 12:44
abin 发表于 2023-8-25 12:11
集群是你做的吗?
如果是,检查一下必要的设定。

谢谢abin老师
集群是并行的bscc-a大内存分区。不是我搭的。

尝试使用
module purge
module load cp2k/2023.1-icc20-gcc8.1.0
能够实现跨节点并行,但是跑了几分钟就会卡住;

后来改用
module purge
module load  cp2k/2023.2-wuxm
module load mpi/openmpi/4.1.1-gcc12.2
依然是几分钟后卡住。
作者
Author:
abin    时间: 2023-8-25 14:47
rugals 发表于 2023-8-25 12:44
谢谢abin老师
集群是并行的bscc-a大内存分区。不是我搭的。

问该集群的软件工程师呀……

如果是自己装的软件,
那你自己捣鼓吧……

找软件工程师,不是系统管理员。
这两人干的活是不一样的。

如果该集群有专用网络,
多机器节点并行,还涉及MPI版本。

选错适配版本,肯定无法使用……

要debug的环节很多的……

作者
Author:
rugals    时间: 2023-8-25 15:08
abin 发表于 2023-8-25 14:47
问该集群的软件工程师呀……

如果是自己装的软件,

好的,谢谢abin老师!
作者
Author:
啊不错的飞过海    时间: 2023-8-27 01:26
没写指导mpi用多个机器的machinefile/hostfile的话,mpi是不会自个儿知道网络上有哪些机子是参与通信、做计算的,这个要手动写。
作者
Author:
rugals    时间: 2023-9-3 20:26
啊不错的飞过海 发表于 2023-8-27 01:26
没写指导mpi用多个机器的machinefile/hostfile的话,mpi是不会自个儿知道网络上有哪些机子是参与通信、做计 ...

谢谢大佬,找资深工程师测试了好多遍终于解决
作者
Author:
乐平    时间: 2023-9-5 12:24
rugals 发表于 2023-9-3 20:26
谢谢大佬,找资深工程师测试了好多遍终于解决

请问需要在提交计算任务的脚本里添加什么呢?
作者
Author:
abin    时间: 2023-9-5 14:37
本帖最后由 abin 于 2023-9-5 14:41 编辑

一个例子:  使用的是4个节点, 每个节点8个处理器核心, 每一个处理器核心搭配一个thread (因为-c 1, 或者--cpus_per_task=1), 每个节点要32GB内存. 可以根据需要修改. 当前例子使用MPICH, 可能无法适用于OpenMPI.
  1. #!/bin/bash

  2. #Submit this script with: sbatch thefilename

  3. #SBATCH --time=720:00:00   # walltime
  4. #SBATCH --ntasks-per-node=8
  5. #SBATCH --nodes=4   # number of nodes
  6. #SBATCH -c 1
  7. #SBATCH --mem=32G   # memory per node
  8. #SBATCH -J "cp2k"   # job name


  9. # set input file name here
  10. export FullNameInputFile=cp2k.in


  11. # LOAD MODULES, INSERT CODE, AND RUN YOUR PROGRAMS HERE
  12. ulimit -d unlimited
  13. ulimit -s unlimited
  14. ulimit -t unlimited
  15. ulimit -v unlimited

  16. export SLURM_EXPORT_ENV=ALL


  17. cd $SLURM_SUBMIT_DIR
  18. username=`whoami`

  19. ### here, suppose /tmp is the I/O storage.

  20. CP2K_RUNDIR=/tmp/${username}.${SLURM_JOB_ID}

  21. if [ ! -a $CP2K_RUNDIR ]; then
  22.    echo "Scratch directory $CP2K_RUNDIR created."
  23.    mkdir -p $CP2K_RUNDIR
  24. fi

  25. cp -r $SLURM_SUBMIT_DIR/* $CP2K_RUNDIR

  26. cd $CP2K_RUNDIR

  27. source /home/users/xzwu/bin/softs/cp2k/cp2k-2023.1/tools/toolchain/install/setup
  28. export PATH=/home/users/xzwu/bin/softs/cp2k/cp2k-2023.1/exe/local:$PATH

  29. export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK

  30. echo "Starting CP2K run at `hostname` on:" `date` >> ${SLURM_JOB_ID}.log

  31. srun --mpi=pmi2 cp2k.psmp ${FullNameInputFile} 1>cp2k.out 2>cp2k.err

  32. echo "Finished CP2K run at `hostname `on:" `date` >> ${SLURM_JOB_ID}.log
  33. cat $SLURM_JOB_NODELIST >> ${SLURM_JOB_ID}.log

  34. mv $CP2K_RUNDIR/* $SLURM_SUBMIT_DIR
  35. rm -fr $CP2K_RUNDIR

复制代码


以上示例, 来自于 https://gitee.com/hpc4you/redstar


如果集群配置不当, 或者slurm配置不当, 以及cp2k编译不当, 可能无法多节点并行.

作者
Author:
rugals    时间: 2023-9-5 16:17
乐平 发表于 2023-9-5 12:24
请问需要在提交计算任务的脚本里添加什么呢?

#!/bin/bash
#SBATCH -p amd_512
#SBATCH -N 2
#SBATCH -n 128
source /public1/soft/modules/module.sh
module purge
module load  cp2k/2023.2-wuxm
module load mpi/openmpi/4.1.1-gcc12.2
srun -n 128 cp2k.psmp -i ceshi.inp  -o ceshi.out


最终还是没用hostlist

不过这些设置和节点本身的部署方式关系很大,仅供参考
作者
Author:
乐平    时间: 2023-9-5 20:15
rugals 发表于 2023-9-5 16:17
#!/bin/bash
#SBATCH -p amd_512
#SBATCH -N 2

谢谢




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3