MPI降低了障碍

时间:2015-08-15 01:41:42

标签: mpi

关于MPI allreduce操作的内部结构及其与MPI屏障的关系的信息很少,而这些信息并不一致。所以,我想澄清以下两个问题:

  1. 我应该使用allreduce屏障(我的MPI版本是3.1.3)吗?
  2. 在并行编程的上下文中是否同步和阻止相同的事情,如果不是它们与allreduce和barrier操作的关系如何?

1 个答案:

答案 0 :(得分:3)

除了MPI_Barrier之外,没有MPI集合具有屏障语义,尽管一些其他操作由于数据依赖性而具有屏障语义 。 MPI_All {reduce,gather,toall}至少对于非零计数具有这样的数据依赖性,因此将赋予障碍。

因此,不,你应该永远不要为allreduce添加障碍,除非你想在计数为零时屏障。

我知道在一些超级计算机上集体之前增加障碍的性能原因,但这确实是一个实现问题。

同步和阻止不是一回事。非阻塞集合在完成时同步。有关这些术语的更详细定义,请参阅MPI标准。

这有帮助吗?如果没有,我会添加它,直到它。