在同一个函数中调用 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 - 您已经打了一个同步点;第二道关卡到底要做什么?
在 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 - 您已经打了一个同步点;第二道关卡到底要做什么?