从另一个MPI程序中启动MPI可执行文件



我有两个程序,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的源代码来设置此通信器。

我可能错了,但是说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充分使用它。

最新更新