openmpi python 环境搭建及使用

1. open-mpi 是什么

open-mpi的官方定义:A High Performance Message Passing Library(from https://www.open-mpi.org/)

MPI是Message Passing Interface的简称,也就是消息传递。消息传递指的是并行执行的各个进程具有自己独立的堆栈和代码段,作为互不相关的多个程序独立执行,进程之间的信息交互完全通过显示地调用通信函数来完成

本文主要是使用open-mpi来进行多核编程, 以提高程序的并发处理能力。

2.在python的环境下, 如何用mpi4py来进行open-mpi的使用,这里记录下环境的安装过程。

1)在MAC上的安装

a. 首先需要安装open-mpi

brew install open-mpi, 在这过程中出现libevent这个依赖无法下载的情况(下载链接失效404了),可以通过brew update来更新brew的库,

然后再次安装即可。安装完成后, 运行mpirun,表明安装成功。

b. 安装mpi4py

sudo pip install mpi4py

c. 安装numpy,用于大文件的处理。

sudo pip install numpy

参考http://blog.csdn.net/zouxy09/article/details/49031845

通过使用, 发现,对于很多多并发的问题, MPI并没有很大的简化。

实际上, 在我遇到的问题中, 使用multiprocessing+pool,可以很好的解决,且比mpi4py更简洁。

举个例子, mpi4py中的scatter(data,root=0),这里的data是个数组, 且data的长度必须和comm_size = comm.Get_size()的大小一致。实际应用中,我们需要把data(一个原始的长数组),自己给均分成数组的数组,数组的数组的长度和comm_size(进程数)一致。文档和官方的例子都很诱导人, 以为是mpi4py替你分好组了呢。




猜你喜欢

转载自blog.csdn.net/smithallenyu/article/details/52649314