我正在使用 Open MPI 进行并行编程领域的第一步。我想要实现的是用两个进程启动一个应用程序(这可以通过 mpirun -n 2 ... 来实现)并使第一个进程从这两个进程中产生另一个自身的实例。这是c ++中的草图:
// mpi_spawn_cpp2.cc
#include "mpi.h"
#include <iostream>
using namespace std;
int main( int argc, char *argv[] )
{
int rank, size;
int errcode;
MPI::Intercomm intercomm;
MPI::Init( argc, argv );
rank = MPI::COMM_WORLD.Get_rank();
size = MPI::COMM_WORLD.Get_size();
cout << "world size: " << size << endl;
if (rank == 0) {
intercomm = MPI::COMM_WORLD.Spawn("./mpi_spawn_cpp2", MPI::ARGV_NULL, 1, MPI::INFO_NULL, 0, &errcode);
cout << "intercomm size: " << intercomm.Get_size() << endl;
}
MPI::Finalize();
return 0;
}
尽管它编译完美,但上述代码的问题在于它似乎没有从 Spawn 函数返回,这意味着该进程实际上并未产生。上面的代码有什么问题,应该纠正什么才能让它工作?
非常感谢您的帮助。