mpirun 学习验证

1、测试用例基础

mpicxx -g -O3  -DLAMMPS_GZIP -DLMP_USER_OMP  -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 demo.cpp

mpirun --bind-to core --allow-run-as-root -np 6 --mca btl ^openib ./a.out

#include <mpi.h>
#include <stdio.h>

int main( int argc,  char *argv[]){
   int myrank, npes;
   MPI_Init (&argc, &argv);                //Initializations
   MPI_Comm comm = MPI_COMM_WORLD ; 
   MPI_Comm_rank (MPI_COMM_WORLD, &myrank);
   MPI_Comm_size (MPI_COMM_WORLD, &npes);  //MPI RANK,SIZE
   printf("i am here\n"); 
   MPI_Finalize();
   return(0);
}

2、参考下面进阶版本的实现方法

c - An error occured in MPI_Recv while sending an array - Stack Overflow

[lammps_case_omp]# mpirun --allow-run-as-root -mca pml ucx -mca btl ^vader,tcp,openib,uct -x UCX_TLS=self,sm --bind-to core -np 3 ./a.out 
2
Message from process 0 : N=2
Message from process 1 : N=2
Message from process 2 : N=2
Message from process 0 : 0.100000
Message from process 1 : 1.100000
Message from process 2 : 0.000000

3、发现一个奇怪的事情:lammp在某些服务器上,直接使用mpirun --bind-to core --allow-run-as-root -np 128 --mca btl ^openib ./lmp_omp -in equ.in_omp正常,但是封装到shell脚本中执行异常,提示mca_pml_base_open失败

4、Lammps的输入要求reset_timestep 0前必须undump前面的dump, 参考Problem with read_dump command - #12 by akohlmey - LAMMPS General Discussion - Materials Science Community Discourse

5、鲲鹏服务器不支持超线程,需要mpirun -np m -pk omp n (m*n = 128

time -p mpirun --allow-run-as-root -np 30 -x OMP_NUM_THREADS=4 -x OMP_PROC_BIND=close -map-by ppr:30:node:pe=4 -mca btl ^openib $lammps_exe -sf gpu -pk gpu 2 -in in.elongation_v2.5-bkp  -- 并不一定跑满核性能是最佳的(mpi 绑核策略-map-by ppr:30:node:pe=4,omp绑核策略), 参考 Binding/Pinning - HPC Wiki

6、intel mode运行失败

错误1、Cannot yet use airebo/intel with hybrid. (../pair_airebo_intel.cpp:185) 

-- 解决方法:airebo是用avx512写的,因此检测不到intel编译器时报错,需要移除airebo相关的文件

错误2:高版本 openmpi 4.1.5 对无效输入报错,低版本 openmpi 4.0.4未报错

-- 解决方法:删除无效的输入,看起来性能没有变化

7、版本配套关系

 knem-1.1.3.tar.gz/ucx-1.5.2.tar.gz/openmpi-4.0.4.tar.gz

8、HMPI 的相关命令 

a) -mca btl '^vader,tcp,openib,uct' 禁用ompi中自带的性能较差的组件

b) -mca pml ucx 确保进入ucx层

c) -x UCX_TLS=self,sm 确认传输协议,但结点建议self,sm, 多结点增加rc_x即RDMA协议

9、 运行lammps前先配置export LMP_ROOT=../../../,从而指示从../../..//bench/POTENTIALS/Si.tersoff获取输入文件,否则可能找不到

10、Lammps的intel模式使用的sse源码sse2neon.h接口_mm_undefined_si128中存在未初始化使用,可能有随机的运行时问题

11、网卡配置配置更新,这个可能解决并行度小没有问题,并行度大差错的问题

1、mst start
2、执行以下命令获取端口ID参数。
ibv_devinfo | grep vendor_part_id
vendor_part_id: 4123
3、mlxconfig -d /dev/mst/mt4123_pciconf0 -y s PF_LOG_BAR_SIZE=8
4、reboot

12、在mpi卡住时,可以查看是否有流量 ?

13、-x UCX_TLS=self,sm,rc  -i 1  -- 需要最多资源

      -x UCX_TLS=self,sm,dc  -i 1

       -x UCX_TLS=self,sm,ud  -i 1 -- 需要资源最少

14、ucx_info 可以查看系统默认的版本,在ib驱动安装时自动带上

15、hmpi 加选项-mca coll ^ucx变成了mpirun的默认功能

a)  ucx_info -d 可以查询当前系统支持的协议

b)ompi_info -a 可以查看hmpi的版本信息

16、多结点通讯时需要保证两边环境的二进制及环境变量一致,所以需要在~/.bashrc中使用mount挂载二进制,同时用source来直接配置默认环境变量;-x PATH -x -LD_LIBRARY_PATH传环境变量; 

小技巧:可以在mpirun时传ldd确认两边的环境mpirun -N 1 -hostfile xxx ldd wrf.exe

              可以通过配置/etc/fstab达成系统启动时的配置

17、ulimit -l 不是查看栈空间是否unlimited, 而需使用  ulimit -a 确认是否配置ulimit -s unlimited

18、hmpi的构建配置

 tar -xzvf hmpi-v1.2.1-huawei.tar.gz
cd hmpi-v1.2.1-huawei
./autogen.pl
./configure --prefix=/home/tools/hypermpi-1.2.1 --with-platform=contrib/platform/mellanox/optimized --enable-mpi1-compatibility --with-ucx=$root/hucx
make -j128

19、openforam: https://docplayer.net/124046736-Performance-optimization-of-openfoam-on-knl.html 

20、mpirun运行是可以通过-map-by xxx -report-binding看绑核关系 

taskset -c 将某个进程绑定指定core:  taskset的简单用法--进程绑核_taskset用法-CSDN博客

21、通过yum install numactl-devel 安装 NUMA

  yum install -y rdma-core-devel 安装--with-rdmacm

22、icc的构建配置

LLVM_DIR=/opt/intel/oneapi/compiler/latest/linux

export CC=icc
export CXX=icpc
export FC=ifort
export PATH=${LLVM_DIR}/bin/intel64:$PATH
export LD_LIBRARY_PATH=${LLVM_DIR}/compiler/lib/intel64_lin:$LD_LIBRARY_PATH

23、 ls /sys/devices/system/cpu/ 可以看到多种cpu隔离模式,比如isolated、nohz_full

   a) 使用numactl -s查看默认情况下可用的核

   b) cat /sys/devices/system/cpu/nohz_full 是看通过 nohz_full 方式被隔离掉了的不能用的核

注意:如果绑核指定的是范围的话,有可能实际只跑在了其中部分核上

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值