0

我有两个程序,1.exe 和 2.exe,每个都使用 MPI。我想使用 mpirun 启动 1.exe,然后调用 2.exe 并等待它完成后再继续。我不需要程序之间进行通信,只需读取 2.exe 生成的文件并处理此输出。一旦启动,2.exe 应该使用分配给 1.exe 的所有处理器,因为它只是在等待。有没有从 1.exe 中调用 2.exe 的好方法?

我已经尝试过 MPI_Comm_Spawn 但似乎我需要在 1.exe 和 2.exe 之间设置一个内部通信器才能等待 2.exe 完成。但是,我无权访问 2.exe 的源代码来设置此通信器。

4

1 回答 1

0

我可能错了,但是说 mpirun 已经启动了 n 个 1.exe 实例,每个实例都可以生成一个 2.exe 实例,要求它完成这项工作(通过命令行参数、环境变量或 2.exe 通常用于的任何其他机制知道该怎么做),这个实例将使用分配给 1.exe 实例的处理器。

然后 1.exe 只需等待 2.exe 完成,例如使用waitpid: http: //linux.die.net/man/3/wait或监控 2.exe 生成的文件。

重要的是 1.exe 不是活动的,所以不会消耗它的资源,但会让 2.exe 充分利用它。

于 2013-01-13T14:30:02.183 回答