我想要做的是向我的超立方體通信器的子域廣播一個值(我的透視)。 因此,例如進程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