我想要做的是向我的超立方体通信器的子域广播一个值(我的透视)。 因此,例如进程0发送到进程1,2 & 3当进程4发送到4,5 6.是否需要我手动创建通信器或者是否有方法来执行广播/发送到选定的进程?如何向多个进程广播或发送单个值(但不是全部)?
int broadcaster = 0;
if(isBroadcaster)
{
cout << "rank " << mpiRank << " currentd:" << currentd << " selecting pivot: " << pivot << endl;
pivot = currentValues[0];
broadcaster = mpiRank;
}
//TODO: Broadcast to processes 0 to 4 only.
//here, MPI_COMM_HYPERCUBE contains process 0 to 8
MPI_Bcast(&pivot, 1, MPI_INT, broadcaster, MPI_COMM_HYPERCUBE);
@WesleyBland建议的(子)通信器的替代方法将是使用MPI的虚拟拓扑之一,可能是图形拓扑。这是一段时间,因为我用它们,所以不能将适当的答案拖在一起。 – 2014-11-04 06:43:59