私は、Open MPI を使用した並列プログラミングの世界で最初の一歩を踏み出しています。私が達成しようとしているのは、2 つのプロセス (これは 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 関数から返されないように見えることです。これは、プロセスが実際には生成されていないことを意味します。上記のコードの何が問題で、動作させるには何を修正する必要がありますか?
よろしくお願いいたします。