内置mpi的自定义boost python模块?

时间:2013-04-24 17:31:36

标签: c++ python boost mpi

原则上,是否可以使用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对战?似乎没有太多关于此的文档,所以我对如何去做它有点无能为力。或者,如果我错过了某些文档,我们将非常感谢URL。

1 个答案:

答案 0 :(得分:2)

经过一些实验,可以做到这一点。该库需要使用mpicxx进行编译,调用它的python脚本需要初始化mpi环境。例如,我使用mpi4py来执行MPI.COMM_WORLD。然后,所有进程都会调用库函数,该函数可以包含控制进程间数据流的代码。