当我运行以下代码时,mpirun -n 2 ./out
它可以正常工作,但mpirun -n 3 ./out
MPI_Win_allocate()
不会返回。我在之前和之后打印到屏幕上检查了这一点MPI_Win_allocate()
。另外,如果我注释掉MPI_Bcast()
代码有效。问题是什么?
编辑:将增强功能更改为标准功能以简化问题。
#include <mpi.h>
int main()
{
MPI_Init(NULL, NULL);
int nmesh;
MPI_Bcast(&nmesh, 1, MPI_INT, 0, MPI_COMM_WORLD);
MPI_Win win;
int* narrival;
MPI_Win_allocate(1*sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &narrival, &win);
MPI_Win_free(&win);
MPI_Finalize();
return 0;
}