计算化学公社

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

[CP2K] 较新版本的CP2K多节点并行速度极慢

[复制链接 Copy URL]

254

帖子

4

威望

4751

eV
积分
5085

Level 6 (一方通行)

本帖最后由 djjj148 于 2022-7-21 16:57 编辑

集群有56G IB网络,测试了一天,发现完全一样的输入文件、提交脚本8.29.12022.1这三个版本在两节点并行时,速度反而比单节点慢一倍多,而7.1的两节点运行速度却可以是单节点的1.8倍左右,提交脚本如下,inp文件请见附件,所有测试用的cp2k程序都是由官方提供的dockerfile制作的镜像文件,按理说不会出现安装失误。
  1. #!/bin/bash
  2. #SBATCH -J cp2k_test
  3. #SBATCH -p P1
  4. #SBATCH --nodes=1
  5. #SBATCH --ntasks-per-node=36

  6. export EXE="singularity exec /public/opt/cp2k71_avx2.sif"
  7. source /public/opt/intel/oneapi/setvars.sh #--config=/public/opt/intel/oneapi/config-2021.4
  8. ulimit -s unlimited

  9. mpirun -np $SLURM_NPROCS ${EXE} cp2k.popt cp2k.inp 1>cp2k.out 2>cp2k.err
复制代码
对于7.1版本,只需要将#SBATCH --nodes=1改为2就可以实现进2倍的提速,其他三个版本反而变慢一倍多。


除此之外,还尝试了其他手段:
export OMP_NUM_THREADS=2/4/8/../36
使用cp2k.psmp
改slurm的脚本,如#SBATCH -N 2    #SBATCH -n 72    #SBATCH -c 1
使用安装包文件中提及的运行方式:
  1. mpirun -npernode 2 -host
  2. slave1:36,slave2:36 \
  3.   --map-by slot:PE=6 --report-bindings \
  4.   -x OMP_PLACES=threads -x OMP_PROC_BIND=SPREAD -x OMP_NUM_THREADS=18 \
  5.   ${EXE} cp2k.psmp cp2k.inp 1>cp2k.out 2>cp2k.err
复制代码
然而,对于8.2,9.1和2022.1,这些手段并没有用,现在是只要用多节点,速度就更慢。google无果,希望大家交流指导一下

另外,7.1版本虽然能通过多节点并行较好提速,但是本身运行速度太慢,单节点的速度比其他三个版本慢了25%-30%。

cp2k.inp

18.69 KB, 下载次数 Times of downloads: 13

254

帖子

4

威望

4751

eV
积分
5085

Level 6 (一方通行)

16#
 楼主 Author| 发表于 Post on 2022-7-23 09:06:19 | 只看该作者 Only view this author
本帖最后由 djjj148 于 2022-7-23 09:08 编辑
cokoy 发表于 2022-7-23 01:21
楼主你好,我在主机里用mpich3.4.3(版本与cp2k2022.1的dockfile中一致)运行,仍然是相同的问题...可以 ...
  1. #!/bin/bash
  2. #SBATCH -J cp2k_2022.1
  3. #SBATCH -p P1
  4. #SBATCH --nodes=2
  5. #SBATCH --ntasks-per-node=36

  6. ulimit -s unlimited
复制代码
  1. #gcc-11.2.0
  2. export PATH=$HOME/opt/cp2k/mpi_for_2022.1_gcc11.2/gcc-11.2.0/bin:$PATH
  3. export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64
  4. export LD_LIBRARY_PATH=$HOME/opt/cp2k/mpi_for_2022.1_gcc11.2/gcc-11.2.0/lib64:$LD_LIBRARY_PATH

  5. #mpich-3.4.3
  6. export MPI_HOME=$HOME/opt/cp2k/mpi_for_2022.1_install_by_gcc11.2.0/mpich-343
  7. export PATH=$MPI_HOME/bin:$PATH
  8. export PATH=$PATH:$MPI_HOME/include
  9. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI_HOME/lib
  10. export MANPATN=$MANPATH:$MPI_HOME/man

  11. export OMP_NUM_THREADS=2
  12. mpirun -np 72 singularity exec /public/opt/cp2k/cp2k-2022.1.sif cp2k.psmp cp2k.inp 1>cp2k.out 2>cp2k.err
复制代码


85

帖子

0

威望

4307

eV
积分
4392

Level 6 (一方通行)

15#
发表于 Post on 2022-7-23 01:21:13 | 只看该作者 Only view this author
djjj148 发表于 2022-7-22 16:37
统一回复:docker里用什么mpi,就在主机上编译一个同样的即可

楼主你好,我在主机里用mpich3.4.3(版本与cp2k2022.1的dockfile中一致)运行,仍然是相同的问题...可以看一下你的slurm脚本吗?

254

帖子

4

威望

4751

eV
积分
5085

Level 6 (一方通行)

14#
 楼主 Author| 发表于 Post on 2022-7-22 16:37:06 | 只看该作者 Only view this author
统一回复:docker里用什么mpi,就在主机上编译一个同样的即可

236

帖子

1

威望

3805

eV
积分
4061

Level 6 (一方通行)

13#
发表于 Post on 2022-7-22 15:31:41 | 只看该作者 Only view this author
djjj148 发表于 2022-7-22 13:49
是mpi的问题,楼上说的很对

本人使用56G IB直连两台8375C,使用intelmpi在两个节点计算,也遇到同样的问题,麻烦楼主能详细解释一下你是怎么解决这个难题的吗?

85

帖子

0

威望

4307

eV
积分
4392

Level 6 (一方通行)

12#
发表于 Post on 2022-7-22 13:58:20 | 只看该作者 Only view this author
djjj148 发表于 2022-7-22 13:49
是mpi的问题,楼上说的很对

你是编译了个和docker一样版本的mpich是吗?我也去编译下。

254

帖子

4

威望

4751

eV
积分
5085

Level 6 (一方通行)

11#
 楼主 Author| 发表于 Post on 2022-7-22 13:49:25 | 只看该作者 Only view this author
cokoy 发表于 2022-7-21 20:03
你试没试过不用docker的cp2k2022.1,跨节点是正常的吗?

是mpi的问题,楼上说的很对

254

帖子

4

威望

4751

eV
积分
5085

Level 6 (一方通行)

10#
 楼主 Author| 发表于 Post on 2022-7-22 13:33:52 | 只看该作者 Only view this author
abin 发表于 2022-7-21 20:02
https://docs.sylabs.io/guides/main/user-guide/mpi.html

Check the MPI version first.

感谢,确实是mpi的问题,重新编译一个mpich就行了

34

帖子

0

威望

1922

eV
积分
1956

Level 5 (御坂)

9#
发表于 Post on 2022-7-22 09:51:41 | 只看该作者 Only view this author
如何确定cp2k数据交换走得网络是IB网络?在您的脚本里面看不出来。

85

帖子

0

威望

4307

eV
积分
4392

Level 6 (一方通行)

8#
发表于 Post on 2022-7-21 20:03:48 | 只看该作者 Only view this author
djjj148 发表于 2022-7-21 19:34
我的和你差不多,又有点区别,用7.1单/双节点,或用2022.1的单节点:%Cpu(s): 97.3 us,  0.3 sy

你试没试过不用docker的cp2k2022.1,跨节点是正常的吗?

2407

帖子

1

威望

5958

eV
积分
8385

Level 6 (一方通行)

7#
发表于 Post on 2022-7-21 20:02:00 | 只看该作者 Only view this author
本帖最后由 abin 于 2022-7-22 10:08 编辑

https://docs.sylabs.io/guides/main/user-guide/mpi.html

Check the MPI version first.
Next, check the IB driver.

By default, cp2k uses MPICH in their official Dockerfile.

High %system, means kernel mode occupies more CPU.

We recommend using the SingularityCE Google Group or Slack Channel to ask for MPI advice from the SingularityCE community. HPC cluster configurations vary greatly and most MPI problems are related to MPI / interconnect configuration, and not caused by issues in SingularityCE itself.


Or, try to rebuild your singularity image with newer version.


补充一下,
按照singularity开发者的说法, 从原理上看, 该技术方案不会造成%system过高,
多数情况, 都是MPI问题.

如果采用cp2k官方默认Dockerfile, 应该是采用MPICH.
Intel MPI和MPICH是同一个东西, 所以, 检查一下版本适配先.
或许是新版本的MPICH, 默认编译时候, 并未支持IB网络.
这个需要你自己测试验证.

另外如楼下提到的, IB使用不恰当的时候, 也许会回落到以太网模式, 慢得离谱是显而易见的.

设备在你手里, 只能你花时间, 慢慢调试了.

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
djjj148 + 5 谢谢

查看全部评分 View all ratings

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

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

254

帖子

4

威望

4751

eV
积分
5085

Level 6 (一方通行)

6#
 楼主 Author| 发表于 Post on 2022-7-21 19:34:31 | 只看该作者 Only view this author
cokoy 发表于 2022-7-21 17:36
我之前遇到的情况是cpu利用率100%,但是大部分都系统占用,比如图中的82.3%,cp2k只用了17.3%,导致多节 ...

我的和你差不多,又有点区别,用7.1单/双节点,或用2022.1的单节点:%Cpu(s): 97.3 us,  0.3 sy


但是用2022.1的双节点:
%Cpu(s): 28.6 us, 26.8 sy


85

帖子

0

威望

4307

eV
积分
4392

Level 6 (一方通行)

5#
发表于 Post on 2022-7-21 17:36:38 | 只看该作者 Only view this author
本帖最后由 cokoy 于 2022-7-21 19:19 编辑


我之前遇到的情况是cpu利用率100%,但是大部分都系统占用,比如图中的82.3%,cp2k只用了17.3%,导致多节点并行速度很低,单节点运行就没有这个问题。

2407

帖子

1

威望

5958

eV
积分
8385

Level 6 (一方通行)

4#
发表于 Post on 2022-7-21 17:34:56 | 只看该作者 Only view this author
监测一下 network I/O
High-Performance Computing for You
为您专属定制的高性能计算解决方案

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

254

帖子

4

威望

4751

eV
积分
5085

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2022-7-21 17:24:28 | 只看该作者 Only view this author
本帖最后由 djjj148 于 2022-7-21 17:25 编辑
cokoy 发表于 2022-7-21 17:17
你看看cpu的利用率,我之前跨节点跑singularity容器的cp2k2022.1,发现cpu利用率特别低,单节点就一切正常 ...

只要不设置OMP_NUM_THREADS为1之外的数,跨节点的CPU利用率都是x个100%(x为物理核心)。

但如果设置为1之外的数,比如6,每个进程的利用率就很难到600%。
7.1版本无论是自己在本地编译还是用的官方镜像,跨节点的提速都正常,应该不是镜像的问题。

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

GMT+8, 2025-8-16 19:43 , Processed in 0.176497 second(s), 25 queries , Gzip On.

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