在同一个函数中调用 MPI_Barrier 两次可以吗?

Calling MPI_Barrier twice in same function is this okay to do?

在 C 中使用 OpenMPI;

说我有

main()
{
MPI_Init();

//// Important Program Region

MPI_Barrier(MPI_COMM_WORLD);

// do something here

MPI_Barrier(MPI_COMM_WORLD);

////
MPI_Finalize();
}

这是不好的做法吗?我可以像这样强制同步两次强制障碍吗?这样做有什么缺点吗?

上面的程序应该可以正常工作。通过 MPI_Barrier 强制同步是完全可以接受的,不仅仅是一次或两次,而是任意多次。话虽如此,MPI_Barrier 的主要缺点是调用次数越多,程序的可扩展性就会明显降低。

注意:如果您按照标题中的建议在 "same line" 上调用它(但不是问题本身),那么第二个障碍实际上是 no-op - 您已经打了一个同步点;第二道关卡到底要做什么?