1
我正在開始使用Open MPI進行並行編程的第一步。我試圖實現的是啓動一個具有兩個進程的應用程序(這可以通過mpirun -n 2 ...來實現),並且從這兩個進程創建第一個進程都產生了它自己的另一個實例。這裏是在C++中的草圖:MPI,通過其中一個進程催生一個孩子
// 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;
}
雖然完美編譯與上面的代碼的問題是,它似乎沒有從菌種功能,這意味着該方法是在實際上並非衍生返回。上面的代碼出現了什麼問題?爲了使其工作起來,應該糾正哪些問題?
非常感謝您的幫助。