不止一次调用MPI_Init

时间:2012-01-27 16:22:05

标签: python pthreads mpi

据我所知,每个可执行实例只能调用多次MPI_init。任何人都可以澄清这种语言的局限性:即:

  1. 我知道可以运行mpiexec上的多个python exec。
  2. 是否有类似fork()或线程可以导致符合条件的内容?是否必须首先发生,然后调用mpiexec?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,最简单的方法是拦截对MPI_Init的调用并仅执行一次。对于C,MPI提供PMPI分析接口,允许您覆盖任何MPI符号并提供额外的PMPI符号。例如。你定义一个函数MPI_Init,并在该函数中,根据第一次调用它,调用PMPI_InitMPI_Finalize的相同(相反)。

我不确定在Python中最优雅的方法。我假设您可以直接进入python绑定或LD_PRELOAD一个简单的C库来执行 magic

所有这些只是一种解决方法,可能会产生不良副作用。 MPI实施建议您在MPI_Init之前不要做太多工作。真正的解决方案是修复代码以适当地使用MPI。