在MPI中,如果我用MPI_Comm_Spawn产生子项,主进程执行产卵。现在孩子们开始做一些工作。我如何告知主人和其他家长级别的流程,孩子们已经完成了?如何知道在MPI_Comm_Spawn调用后是否所有子进程都已完成?
1
A
回答
0
考虑在二进制程序中编写一个包装。不是直接产生程序,而是产生包装器的实例,它将依次启动二进制文件,等待它完成,然后与spawner进程进行通信。
+0
不是一个选项。我需要产生的进程进行通信,否则我不会使用Comm_Spawn。 – 2013-02-21 19:06:09
0
我解决了与包装程序相同的问题,suszterpatt建议。
让master成为调用MPI_Comm_spawn
的程序,slave是您想要生成但不修改其代码的程序,wrapper是包装程序。
让我们考虑一下,你的奴隶本身就是一个mpi程序,需要自己的沟通者与自己沟通(因为你在评论中说过)。
- master产生与
MPI_Comm_spawn
包装。 - 包装器执行从机二进制文件(可能与
system
)。但是没有任何MPI调用(否则slave不会获得MPI上下文)。 - 从设备获取从MPI_Comm_spawn创建的MPI上下文并执行其作业
- 从设备完成时,包装器将从设备的末端指示给主设备。
我不能保证我的解决方案符合MPI标准,但它对于Linux环境的集群上的OpenMPI 1.10有效。它用二进制包装器进行了尝试,并编写了文件以在主站和从站之间进行通信。
相关问题
- 1. 调用MPI_Comm_spawn时,所有进程是否需要所有数据?
- 2. 如何知道所有线程池的线程是否已完成其任务?
- 3. 如何知道线程已完成
- 4. 如何知道该应用是否从后台进程调用
- 5. 我如何知道Grand Central Dispatch中的所有任务都已完成?
- 6. 我们如何知道所有异步操作,所有回调都已完成,并等待它们
- 7. 如何知道所有ajax调用何时完成
- 8. Silverlight 2中如何知道所有异步WCF调用已完成
- 9. 如何知道函数是否完成?
- 10. 如何知道下载是否完成
- 11. 如何通知父线程所有子线程都已终止?
- 12. 如何知道Amazon Elastic Transcoder是否已完成转码
- 13. Android foursquare:我如何知道是否签入已完成?
- 14. 我如何知道工作是否已经完成? - crontab的
- 15. 如何知道窗口是否已完成加载?
- 16. 如何知道WebBrowser是否已完成加载页面?
- 17. 如何知道do_upload是否已经启动并完成?
- 18. 如何知道活动已完成?
- 19. 我如何知道分栏已完成?
- 20. 我如何知道reloadData已经完成
- 21. 如何知道MKMapview setRegion:animated:已完成?
- 22. 如何通知调用子QueueUserWorkItem子已完成?
- 23. 我如何知道在后台运行的AsyncTask已完成?
- 24. 有没有办法知道nodeunit已经完成所有测试?
- 25. 如何知道最后一次AJAX调用在jQuery中完成?
- 26. 如何知道ExecutorService中的所有线程何时完成?
- 27. 如何知道redis中的同步过程是否已经完成?
- 28. c#Task.WhenAll(任务)和SemaphoreSlim - 如何知道所有任务已完全完成
- 29. python如何知道子进程是否正在等待输入
- 30. 如何知道MediaScanner是否已启用?
如何通过通讯器发送消息给他们?或者使用'MPI_BARRIER',它也可以与intercommunicators协同工作。 – 2013-02-21 16:07:38
@HristoIliev:孩子们对Spawn一无所知。这是一个我无法改变的二进制程序。孩子们会打电话给MPI_Finalize。 – 2013-02-21 16:10:48
然后你可以用MPI做的事情并不多,因为它的过程控制机制不能提供一种方法来等待产生的过程简单地完成 - 产卵后你会得到一个互通器,并且你有望在产卵后使用它与父母交谈的过程。 – 2013-02-21 17:05:54