【发布时间】:2013-04-18 09:22:37
【问题描述】:
原则上,是否可以使用 boost python 库在 C++ 中创建具有 MPI 功能的自定义 python 模块?所以我想知道我是否可以在库的一些函数中包含 MPI 功能,然后创建一个这样的 python 脚本:
import myModule
A = myModule.myClass()
A.doSomething()
其中 doSomething() 是一个具有并行化机会的函数。我会这样做
mpirun -np [NUM_PROCS] python my_script.py [OPTIONS]
并获得并行功能。如果这是可能的,我将如何去做?我的意思是显然我需要在模块的源代码中包含一些 MPI 库,但是我需要在 python 脚本中做一些事情以确保它并行运行吗?我必须与 GIL 战斗吗?似乎没有太多关于这方面的文档,所以我对如何去做有点无能为力。或者,如果我在某处遗漏了一些文档,我们将不胜感激。
【问题讨论】:
-
您是否有理由这样做而不是说使用mpi4py?
-
嗯,我最初有一个用 python 编写的库,但它非常慢。现在它是用 C++ 编译的,速度要快得多,但我已经将它扩展(即添加了更多数值操作的函数)到需要很长时间才能再次运行的地步。进行基本计算需要几个小时,但对代码进行扩展则需要大半天时间。