我创建了一个共享内存窗口,用于与内部节点邻居通信。
MPI_Win_allocate_shared(2*size*sizeof(double), 1, MPI_INFO_NULL,
shmcomm, &mem, &win);
double *anew=mem;
double *aold=mem+size;
当邻居在节点间位置时我会使用MPI RMA,所以理想情况下我想做类似的事情
MPI_Put(&aold[index], 1, Xtype, left, offset, 1, Xtype, win);
但是,由于win
已在共享内存环境中分配,因此报告错误,因此它无法理解其自身节点之外的邻居。
有没有办法创建一个与aold
一起使用的辅助窗口,所以我可以做类似
MPI_Put(&aold[index], 1, Xtype, left, offset, 1, Xtype, OtherWin);