为什么MPI集体通信中没有使用'Tag'参数?

时间:2017-05-31 16:19:40

标签: mpi

与MPI_Send / MPI_Recv不同,对于涉及集体通信的其他功能(例如MPI_Bcast / MPI_Gather)没有“Tag”参数。是什么原因?

1 个答案:

答案 0 :(得分:1)

Documentation说:

  

与点对点操作不同,非阻塞集合操作与之不匹配   阻塞集合操作,集合操作没有标记参数。所有   进程必须以相同的顺序调用集合操作(​​阻塞和非阻塞)   每个沟通者。特别是,一旦进程调用集体操作,所有其他操作   通信器中的进程最终必须调用相同的集合操作,否则   其他集体操作与中间相同的沟通者。

当涉及非阻塞通信时,标签很有用。您可能想知道为什么我们为阻塞操作设置了标记参数。在p2p通信的情况下,这是因为阻塞操作可以匹配非阻塞操作。在集体通信的情况下,如上所述,阻塞和非阻塞操作不匹配,因此不需要标记。

在Hristo Iliev的评论之后编辑:我通过做出错误的假设误解了这句话。我将评论复制到答案:

  

标记与使用非阻塞匹配阻止无关   通讯。自标准规定以来,集体没有标签   限制,在给定的通信器中的所有排名都调用相同的   集体运作的顺序和顺序相同,这使得   标签没用。此外,非阻塞集体在MPI-3.0中被引入。