【问题标题】:Calling MPI_Barrier twice in same function is this okay to do?在同一个函数中调用 MPI_Barrier 两次可以吗?
【发布时间】:2017-09-13 10:01:33
【问题描述】:

在 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。你为什么认为你首先需要一个障碍?
  • 哎呀,谢谢你指出,现在我的回答?

标签: c mpi openmpi message-passing


【解决方案1】:

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

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

【讨论】:

  • 抱歉,"line" 的东西是错字,我改正了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多