//As per the standard, perform a barrier to ensure every async comm is finished
bar_->wait();
- int finished = finish_comms();
- XBT_DEBUG("Win destructor - Finished %d RMA calls", finished);
+ flush_local_all();
if (info_ != MPI_INFO_NULL)
simgrid::smpi::Info::unref(info_);
for (auto& req : reqs)
Request::unref(&req);
- int finished = finish_comms();
- XBT_DEBUG("Win_complete - Finished %d RMA calls", finished);
+ flush_local_all();
opened_--; //we're closed for business !
Group::unref(dst_group_);
for (auto& req : reqs)
Request::unref(&req);
- int finished = finish_comms();
- XBT_DEBUG("Win_wait - Finished %d RMA calls", finished);
+ flush_local_all();
opened_--; //we're closed for business !
Group::unref(src_group_);
target_win->lockers_.push_back(rank_);
- int finished = finish_comms(rank);
- XBT_DEBUG("Win_lock %d - Finished %d RMA calls", rank, finished);
- finished = target_win->finish_comms(rank_);
- XBT_DEBUG("Win_lock target %d - Finished %d RMA calls", rank, finished);
+ flush(rank);
return MPI_SUCCESS;
}
target_win->lock_mut_->unlock();
}
- int finished = finish_comms(rank);
- XBT_DEBUG("Win_unlock %d - Finished %d RMA calls", rank, finished);
- finished = target_win->finish_comms(rank_);
- XBT_DEBUG("Win_unlock target %d - Finished %d RMA calls", rank, finished);
+ flush(rank);
return MPI_SUCCESS;
}
int Win::flush(int rank){
MPI_Win target_win = connected_wins_[rank];
- int finished = finish_comms(rank_);
- XBT_DEBUG("Win_flush on local %d - Finished %d RMA calls", rank_, finished);
- finished = target_win->finish_comms(rank);
+ int finished = finish_comms(rank);
+ XBT_DEBUG("Win_flush on local %d - Finished %d RMA calls", rank, finished);
+ finished = target_win->finish_comms(rank_);
XBT_DEBUG("Win_flush on remote %d - Finished %d RMA calls", rank, finished);
return MPI_SUCCESS;
}