Я создал окно общей памяти для связи с соседями внутри узла.
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);