我想在Windows上使用MPI(MPICH2).我写这个命令:
MPI_Barrier(MPI_COMM_WORLD);
Run Code Online (Sandbox Code Playgroud)
我希望它会阻止所有处理器,直到所有组成员都调用它.但事实并非如此.我添加了我的代码示意图:
int a;
if(myrank == RootProc)
a = 4;
MPI_Barrier(MPI_COMM_WORLD);
cout << "My Rank = " << myrank << "\ta = " << a << endl;
Run Code Online (Sandbox Code Playgroud)
(使用2个处理器:)根处理器(0)正常工作,但是具有等级1的处理器不知道a变量,因此它显示-858993460而不是4.
谁能帮我?
问候
您只是a在进程0中进行分配.MPI不共享内存,因此如果您希望a进程1获取值4,则需要MPI_Send从进程0和MPI_Recv进程1 进行调用.