如何使用MPI在python 2.7中进行并行计算?

时间:2015-01-19 12:52:01

标签: python parallel-processing

我编写了一个python代码来执行遗传算法优化,但它太慢了。我想知道如何在并行模式下运行相同的多个CPU?

为了更清楚,我的代码将调用另一个python代码,比如100个一个接一个地调用,我想在4个CPU之间划分它。因此每个CPU解决了外部python代码的25倍。从而提高速度。 如果有人可以帮助我,我们非常感激吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

有几个软件包为python2提供并行计算。我是一个名为pathos的软件包的作者,它提供了几个并行后端的并行计算,并为它们提供了一个通用的API。 pathos为多进程,多线程,并行套接字,MPI并行以及与调度程序和ssh的交互提供并行管道和映射。 pathos依赖于多个软件包,如果您不想要所有不同的选项,可以选择这些软件包。

pathos使用:pyina,后者又使用mpi4pympi4py提供了对MPI的绑定,但是您无法通过python运行代码' ...您需要运行任何用于运行MPI的代码。 pyina使您可以从普通python运行mpi4py,并与调度程序进行交互。另外,pyina使用dill,它可以序列化大多数python对象,因此您更能够跨进程发送所需内容。

pathos提供multiprocessing的分叉,与dillpyina配合得很好。使用两者可以使您能够进行分层并行竞争 - 例如启动MPI并行,然后生成多进程或多线程并行。

pathos也使用ppft,它是pp(并行Python)的分支,它提供跨套接字的并行计算 - 这意味着您可以跨多个连接并行映射机等。

pathos还有其他选择,例如IPython-parallel。但是,使用MPI的能力是非常新的,我也不知道它有多么强大。它可能会或可能不会利用已经开发一段时间的IPython-cluster-helper。请注意,IPython不使用pp,而是使用zmqIPython如果您喜欢云内容,还可以提供与EC2的连接。< / p>

以下是一些相关链接:

  1. pathos'pyinadillppfthttps://github.com/uqfoundation
  2. Ipython-cluster-helperhttps://github.com/roryk/ipython-cluster-helper
  3. IPythonhttp://ipython.org/ipython-doc/dev/parallel/parallel_mpi.html