mpi编程

主要参考 https://mpitutorial.com/tutorials/mpi-hello-world/

 1.

编译:

mpicc my_mpi_application.c -o my_mpi_application

运行 

 mpirun  -host node0:2,node1,node2 mpi_hello_world

 

-host 参数指定主机,主机可以加冒号指定核数,默认就是使用一个核。

注意每个主机都要在相同路径下有相同的程序。最方便的就是使用一个共享文件系统。

 

--

也可以将host写到文件里,然后用 -hostfile 参数指定文件路径。

slots=4 max-slots=4 跟在主机名后面,可以指定该主机可以使用几个核,以及最大有几个核  https://www.open-mpi.org/faq/?category=running

 

 

--


Command 'mpirun' not found, but can be installed with:

sudo apt install lam-runtime
sudo apt install mpich
sudo apt install openmpi-bin
sudo apt install slurm-wlm-torque

 

 

2.

指定端口指定用户名。

如果要在node0上运行mpi,node1使用10022端口和mm用户名链接。

那么再.ssh 下建立 config文件,内容

Host node1

Port 10022

User mm

 

3. Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages

根据 https://www.ibm.com/docs/en/smpi/10.2?topic=environment-setting-mca-parameters

/etc/ 目录下有配置文件 

比如/etc/openmpi/openmpi-mca-params.conf

最后一行写上就行

 

 

-----

4. 装多个版本的mpi会造成一些问题,比如mpirun  基于mpi4py的 python3的程序会卡主,原因是rank都会是0.

解决办法是清除掉所有mpi,只安装一个版本,openmpi适配mpi4py比较,mpich会有一些问题,比如print不打印。

 

可以看  /usr/lib/x86_64-linux-gnu/*mpi* ,清空彻底后里面应该没有mpi相关库

libmpich.so 包名叫 libmpich-dev

一般是 openmpi-bin  mpich  libmpi-dev

 

重装openmpi后记得要pip3 重装 mpi4py,且不能用缓存里的,因为mpi4py会根据系统的mpi下载对应的版本。

 

5. 老版本跑分布式可能会出现 

Open MPI detected an inbound MPI TCP connection request from a peer that appears to be part of this MPI job

问题,并且卡住。

https://github.com/open-mpi/ompi/issues/5818

mpirun \
    --mca btl_tcp_if_include 10.193.184.0/24 \   
或ip替换为网卡名,可解决

 

posted on 2021-12-22 13:36  longbigfish  阅读(1004)  评论(0)    收藏  举报

导航