【问题标题】:Custom boost python module with built in mpi?内置mpi的自定义boost python模块?
【发布时间】: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++ 编译的,速度要快得多,但我已经将它扩展(即添加了更多数值操作的函数)到需要很长时间才能再次运行的地步。进行基本计算需要几个小时,但对代码进行扩展则需要大半天时间。

标签: c++ python boost mpi


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多