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) 收藏 举报
浙公网安备 33010602011771号