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

时间:2017-04-17 18:33:37

标签: c mpi openmpi message-passing

在C中使用OpenMPI;

说我有

main()
{
MPI_Init();

//// Important Program Region

MPI_Barrier(MPI_COMM_WORLD);

// do something here

MPI_Barrier(MPI_COMM_WORLD);

////
MPI_Finalize();
}

这是不好的做法吗?我可以强制同步强制两次这样的障碍吗?这样做的任何缺点?

1 个答案:

答案 0 :(得分:1)

上述程序应该按原样运行。通过MPI_Barrier强制同步不仅仅是一次或两次,而是根据需要强制同步,这是完全可以接受的。话虽如此,MPI_Barrier的主要缺点是,您调用它的次数越多,程序的可伸缩性就越小。

注意:如果你在标题中建议的“同一行”上调用它(但不是问题本身),那么第二个障碍实际上是无操作 - 你已经达到同步点;第二道屏障究竟要做什么?