参考

https://zhuanlan.zhihu.com/p/157804393?from_voters_page=true
https://www.cnblogs.com/starryxsky/p/10344344.html

什么是MPI?

MPI (Message Passing Interface)是一套标准,不是一个软件。事实上它是一套并行运算中信息传递和处理的标准,在这个标准之上,编程者可以很方便地组织自己的并行程序。

这套标准有很多种实现,比如C++,Fortran,Python的mpi4py,Matlab-MPI等等。在这些程序中调用响应的库来实现程序的并行化。

mpi4py是mpi的python接口,并不是mpi本身,所以首先要安装一个 MPI 实现软件,最好能支持 MPI-3 标准,并且最好是动态编译的。比较常用的 MPI 实现软件有 OpenMPI,MPICH 等。

安装MPI所需的环境

1. 安装openMPI

windows版本安装包OpenMPI_v1.6.2-2_win64.exe

2. 安装VSCompiler

进入微软下载链接,下载生成工具,然后直接双击进行安装。
安装

3. 安装mpi4py

废话:使用conda或者pip直接安装mpi4py遇到了很多错误,比如使用conda安装时,只适用于python2.7,无法在python3.x上安装。所以直接看下面能在python3.8上成功的方法吧。

官网选择一个版本下载(我选的3.0),本地解压后,打开cmd(最好以管理员方式打开)执行以下命令。

cd 你解压后的文件夹位置(如D://mpi4py-3.0.0)
conda activate 你的conda环境名字(如果不是conda环境请忽略)
python setup.py build
python setup.py build --mpi=other_mpi
python setup.py install

执行完这些命令后,可以执行conda list看看有没有mpi4py包,有的话,MPI就配置成功了!

4. 安装MS-MPI(可选)

如果报如下错误,则需要安装MS-MPI,若连接失效请从这里进入。

 “mpi.h”: No such file or directory

注意,msi和exe都下载安装。
在这里插入图片描述

测试

新建一个python文件test.py

from mpi4py import MPI

comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()

if rank == 0:
    msg = 'Hello, world'
    comm.send(msg, dest=1)
elif rank == 1:
    s = comm.recv()
    print("rank %d: %s" % (rank, s))
else:
    print("rank %d: idle" % (rank))

在cmd中执行MPI命令:

mpiexec -np 8 python test.py

可以看到运行结果:

rank 2: idle
rank 6: idle
rank 4: idle
rank 7: idle
rank 5: idle
rank 3: idle
rank 1: Hello, world

可以说明MPI正确地启动了8个进程, 并且给引为1的进程发送了“Hello World”,而后该进程接收到了这个信息。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐