计算化学公社

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

[并行运算] 求助:如何用CP2K psmp版实现跨节点?

[复制链接 Copy URL]

145

帖子

0

威望

1412

eV
积分
1557

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
如题
两个节点,单节点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的跨节点运行?

2302

帖子

1

威望

5481

eV
积分
7803

Level 6 (一方通行)

2#
发表于 Post on 2023-8-25 12:11:32 | 只看该作者 Only view this author
集群是你做的吗?
如果是,检查一下必要的设定。

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

srun -N 2 -n 128 XXX

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

High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

145

帖子

0

威望

1412

eV
积分
1557

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2023-8-25 12:44:10 | 只看该作者 Only view this author
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
依然是几分钟后卡住。

2302

帖子

1

威望

5481

eV
积分
7803

Level 6 (一方通行)

4#
发表于 Post on 2023-8-25 14:47:28 | 只看该作者 Only view this author
rugals 发表于 2023-8-25 12:44
谢谢abin老师
集群是并行的bscc-a大内存分区。不是我搭的。

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

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

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

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

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

要debug的环节很多的……
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

145

帖子

0

威望

1412

eV
积分
1557

Level 5 (御坂)

5#
 楼主 Author| 发表于 Post on 2023-8-25 15:08:46 | 只看该作者 Only view this author
abin 发表于 2023-8-25 14:47
问该集群的软件工程师呀……

如果是自己装的软件,

好的,谢谢abin老师!

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

6#
发表于 Post on 2023-8-27 01:26:56 | 只看该作者 Only view this author
没写指导mpi用多个机器的machinefile/hostfile的话,mpi是不会自个儿知道网络上有哪些机子是参与通信、做计算的,这个要手动写。

145

帖子

0

威望

1412

eV
积分
1557

Level 5 (御坂)

7#
 楼主 Author| 发表于 Post on 2023-9-3 20:26:42 | 只看该作者 Only view this author
啊不错的飞过海 发表于 2023-8-27 01:26
没写指导mpi用多个机器的machinefile/hostfile的话,mpi是不会自个儿知道网络上有哪些机子是参与通信、做计 ...

谢谢大佬,找资深工程师测试了好多遍终于解决

1063

帖子

0

威望

3276

eV
积分
4339

Level 6 (一方通行)

8#
发表于 Post on 2023-9-5 12:24:09 | 只看该作者 Only view this author
rugals 发表于 2023-9-3 20:26
谢谢大佬,找资深工程师测试了好多遍终于解决

请问需要在提交计算任务的脚本里添加什么呢?

2302

帖子

1

威望

5481

eV
积分
7803

Level 6 (一方通行)

9#
发表于 Post on 2023-9-5 14:37:34 | 只看该作者 Only view this author
本帖最后由 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编译不当, 可能无法多节点并行.

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
rugals + 5 赞!

查看全部评分 View all ratings

High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

145

帖子

0

威望

1412

eV
积分
1557

Level 5 (御坂)

10#
 楼主 Author| 发表于 Post on 2023-9-5 16:17:27 | 只看该作者 Only view this author
乐平 发表于 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

不过这些设置和节点本身的部署方式关系很大,仅供参考

1063

帖子

0

威望

3276

eV
积分
4339

Level 6 (一方通行)

11#
发表于 Post on 2023-9-5 20:15:58 | 只看该作者 Only view this author
rugals 发表于 2023-9-5 16:17
#!/bin/bash
#SBATCH -p amd_512
#SBATCH -N 2

谢谢

本版积分规则 Credits rule

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

GMT+8, 2024-11-27 11:07 , Processed in 0.566282 second(s), 22 queries , Gzip On.

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