我有两个程序,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之间设置一个inter-communicator,以便等待2.exe完成。但是,我没有访问2.exe的源来设置这个通信器。
答案 0 :(得分:0)
我可能错了,但是说mpirun已经启动了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完全使用它。