【发布时间】:2011-12-11 02:36:45
【问题描述】:
在 MPI 程序中,使用 MPI_COMM_SPAWN,可以将 mpi 进程或非 Mpi 进程派生到其他主机。生成的这些子进程将在完成后将工件返回给父进程。
对于 Mpi 进程,我假设可以简单地使用 inter comm 发送状态,但是,非 mpi 进程呢?我假设我可以使用传统的 linux IPC 进行通信,这听起来有点像 hack……任何人都知道在这里做什么?
非常感谢
【问题讨论】:
在 MPI 程序中,使用 MPI_COMM_SPAWN,可以将 mpi 进程或非 Mpi 进程派生到其他主机。生成的这些子进程将在完成后将工件返回给父进程。
对于 Mpi 进程,我假设可以简单地使用 inter comm 发送状态,但是,非 mpi 进程呢?我假设我可以使用传统的 linux IPC 进行通信,这听起来有点像 hack……任何人都知道在这里做什么?
非常感谢
【问题讨论】:
恕我直言,使用 mpi_comm_spawn 的唯一原因是当您无法在启动前确定大小时动态创建新的 MPI 工作程序,因此使用 mpi_comm_spawn 生成非 mpi 应用程序没有任何意义......
更新:根据http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf,第 10 章,“父进程中的 MPI_COMM_SPAWN 和子进程中的 MPI_INIT 形成对父子进程联合的集体操作”,所以看起来你不能生成非 mpi过程。
【讨论】: