在C中使用OpenMPI;
说我有
main()
{
MPI_Init();
//// Important Program Region
MPI_Barrier(MPI_COMM_WORLD);
// do something here
MPI_Barrier(MPI_COMM_WORLD);
////
MPI_Finalize();
}
这是不好的做法吗?我可以强制同步强制两次这样的障碍吗?这样做的任何缺点?
答案 0 :(得分:1)
上述程序应该按原样运行。通过MPI_Barrier
强制同步不仅仅是一次或两次,而是根据需要强制同步,这是完全可以接受的。话虽如此,MPI_Barrier
的主要缺点是,您调用它的次数越多,程序的可伸缩性就越小。
注意:如果你在标题中建议的“同一行”上调用它(但不是问题本身),那么第二个障碍实际上是无操作 - 你已经达到同步点;第二道屏障究竟要做什么?