如何从 MPI 生成进程获取状态?
在 MPI 程序中,使用 MPI_COMM_SPAWN,可以向其他主机生成 mpi 进程或非 Mpi 进程。这些产生的子进程将在完成后返回到父进程。
对于 Mpi 进程,我假设可以简单地使用内部通信来发送状态,但是,非 mpi 进程怎么样?我假设我可以使用传统的 linux IPC 来进行通信,这听起来有点像黑客……有人对在这里做什么有一些绝妙的想法吗?
非常感谢
In an MPI program, using MPI_COMM_SPAWN, one can spawn an mpi process or nonMpi process to other hosts. These children processes spawned will have artifacts to return to the parent upon completion.
For Mpi Processes, I assume one can simply use inter comm to send status, yet, how about the non mpi processes ? I assume I can use tradictional linux IPC to communicate back, which sounds kind of like a hack... Anyone has some brilliant idea about what to do here ?
Many Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
恕我直言,使用 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 进程。
Imho, the only reason to use mpi_comm_spawn is to create new MPI workers dinamically when you can't determine the size before it starts, so there is no meaning to spawn a non-mpi application using mpi_comm_spawn...
Update: According to http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf, chapter 10, "MPI_COMM_SPAWN in the parents and MPI_INIT in the children form a collective operation over the union of parent and child processes", so it looks like you can not spawn a non-mpi process.