MPI_Info Win::info()
{
- if (info_ == MPI_INFO_NULL)
- info_ = new Info();
- info_->ref();
return info_;
}
int Win::fence(int assert)
{
XBT_DEBUG("Entering fence");
- if (opened_ == 0)
- opened_=1;
+ opened_++;
if (not (assert & MPI_MODE_NOPRECEDE)) {
// This is not the first fence => finalize what came before
bar_->wait();
mut_->unlock();
}
+ // FIXME: The current implementation fails to ensure the correct ordering of the accumulate requests. The following
+ // 'flush' is a workaround to fix that.
+ flush(target_rank);
XBT_DEBUG("Leaving MPI_Win_Accumulate");
return MPI_SUCCESS;
}