MPI通信复杂性

时间:2012-05-16 19:47:59

标签: parallel-processing communication complexity-theory mpi

我正在研究在MPI中并行实现Quicksort的通信复杂性,我在一本书中发现了类似的内容:

  

“单个进程从每个其他p-1进程中收集常规样本。由于传递的值相对较少,因此消息延迟可能是此步骤的主要术语。因此聚集的通信复杂性是O(log p)“(O实际上是theta,p是处理器的数量)。

对广播信息也作出同样的肯定。

为什么这些群组通信的复杂性为O(log p)?是因为通信是使用某种基于树的层次结构完成的吗?

如果延迟不是主要术语并且发送了大量数据怎么办?复杂性是否为O(n log(p)),其中n将是发送数据的大小除以可用带宽?

那么,MPI_Send()和MPI_Recv()的通信复杂性怎么样?

提前致谢!

1 个答案:

答案 0 :(得分:5)

是的,聚集和散射是使用(取决于特定的MPI版本)实现的,例如二项式树,超立方体,线性阵列或2D方形网格。可以使用超立方体等来实现全集合操作。

对于聚集或分散,让lambda成为延迟并测试带宽。然后需要log p步骤。假设您要发送n个整数,每个整数使用4个字节表示。发送它们的时间是

enter image description here

当n = 0(1)时,这是O(log p),否则是O(log p + n)。 对于广播,所需时间是

enter image description here

当n = 0(1)时为O(log p),否则为O(n log p)。

最后,对于像MPI_Send()这样的点对点通信,如果要发送n个整数,则通信复杂度为O(n)。当n = 0(1)时,复杂性显然是O(1)。