Этот вектор содержит сообщение в этом формате: [destination_process, source_process, данные, смещение] .
здесь смещение является индексом в ARPE, в котором данные будут размещены в назначении. /> У всех процессов есть свои обновления, которые они хотят отправить в свой собственный Syncer .
Я вызываю синхронизацию метода (Vector & syncer) в конце импульса. Код выглядит так: < /p>
Код: Выделить всё
MPI_Win_fence (0, arr) ;
log_message ("rma cycle has started ") ;
for (auto &sync_this:syncer) {
int from_process = sync_this[0] ;
int to_process = sync_this[1] ;
int local_offset = sync_this[2] ;
int value = sync_this[3] ;
log_message ("from process = " + to_string (from_process) + "to_process = " + to_string (to_process)+"offset = " + to_string(local_offset) + " " + to_string (value)) ;
// call accumulate from
int result = 0;
MPI_Accumulate (&value, 1, to_process, 1, 1, MPI_INT, MPI_SUM, arr) ;
log_message ("result of accumulation " + to_string (value) + " == " +to_string (result)) ;
}
MPI_Win_fence (0, arr) ;
MPI_Barrier (MPI_COMM_WORLD) ;
}
< /code>
Обновления происходят в соответствующих индексах, но значения очень велики.
Значение переменной < /code> имеет правильные значения. Это должно было сработать в этом случае. Что такое mpi_accumulate Большое спасибо за ваше время.
Подробнее здесь: https://stackoverflow.com/questions/776 ... teopen-mpi
Мобильная версия