我开始使用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;
}
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行它:
aprun -n 4 test
Run Code Online (Sandbox Code Playgroud)
我的输出是
master
master
master
master
Run Code Online (Sandbox Code Playgroud)
我期待着类似的东西
slave
master
slave
slave
Run Code Online (Sandbox Code Playgroud)
为什么会这样?为什么我的所有主题都是主人?
问题出在这一行:
int myRank = MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
Run Code Online (Sandbox Code Playgroud)
您不应将myRank分配给MPI_Comm_rank调用的结果.做就是了:
int myRank;
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
Run Code Online (Sandbox Code Playgroud)
它会起作用.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |