是的,收集和散布是使用(取决于特定的MPI版本)实现的,例如二项式树,超立方体,线性阵列或2D方形网格。可以使用超立方体等来实现全集合操作。
对于聚集或分散,让lambda成为延迟并测试带宽。然后需要log p步骤。假设您要发送n个整数,每个整数使用4个字节表示。发送它们的时间是
当n = 0(1)时,这是O(log p),否则是O(log p + n)。 对于广播,所需的时间是
当n = 0(1)时为O(log p),否则为O(n log p)。
最后,对于像MPI_Send()这样的点对点通信,如果要发送n个整数,则通信复杂度为O(n)。当n = 0(1)时,复杂度显然是O(1)。