我开始使用MPI并编写了一个快速演示程序:
int main(int argc, char** argv)
{
MPI_Init(&argc, &argv);
int myRank = MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
if (myRank) {
cout << "slave" << endl;
}
else {
cout << "master" << endl;
}
MPI_Finalize();
return 0;
}
我使用以下命令运行它:
aprun -n 4 test
我的输出是
master
master
master
master
我期待像
这样的东西slave
master
slave
slave
为什么会这样?为什么我的所有主题都是主人?
答案 0 :(得分:6)
问题出在这一行:
int myRank = MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
您不应将myRank分配给MPI_Comm_rank调用的结果。只是做:
int myRank;
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
它会起作用。