16 : win_(common::topology::
mpicomm(), 1),
17 remote_epochs_(common::topology::
n_ranks(), 1),
28 MPI_Win
win()
const {
return win_.
win(); }
33 data().current_epoch++;
45 if (release_needed(rh)) {
48 bool request_done =
false;
54 usleep(check_interval_);
55 if (make_mpi_progress_) {
73 const rma_data& data()
const {
return *win_.
baseptr(); }
74 rma_data& data() {
return *win_.
baseptr(); }
81 return common::mpi_get_value<epoch_t>(target_rank, offsetof(rma_data,
current_epoch),
win());
85 epoch_t requested_epoch)
const {
88 epoch_t remote_epoch = remote_epochs_[target_rank];
89 while (remote_epoch < requested_epoch) {
92 offsetof(rma_data, requested_epoch),
win());
93 if (result == remote_epoch) {
96 remote_epoch = result;
101 common::mpi_win_manager<rma_data> win_;
102 std::vector<epoch_t> remote_epochs_;
104 bool make_mpi_progress_;
T * baseptr() const
Definition: mpi_rma.hpp:410
MPI_Win win() const
Definition: mpi_rma.hpp:409
Definition: release_manager.hpp:13
release_handler get_dummy_handler() const
Definition: release_manager.hpp:40
release_manager()
Definition: release_manager.hpp:15
epoch_t current_epoch() const
Definition: release_manager.hpp:30
void increment_epoch()
Definition: release_manager.hpp:32
MPI_Win win() const
Definition: release_manager.hpp:28
bool release_requested() const
Definition: release_manager.hpp:63
release_handler get_release_handler() const
Definition: release_manager.hpp:36
uint64_t epoch_t
Definition: release_manager.hpp:21
void ensure_released(const release_handler &rh)
Definition: release_manager.hpp:44
int rank_t
Definition: topology.hpp:12
MPI_Comm mpicomm()
Definition: topology.hpp:206
rank_t my_rank()
Definition: topology.hpp:207
void mpi_make_progress()
Definition: mpi_util.hpp:260
T mpi_atomic_cas_value(const T &value, const T &compare, int target_rank, std::size_t target_disp, MPI_Win win)
Definition: mpi_rma.hpp:222
Definition: block_region_set.hpp:9
core::instance::instance_type::release_handler release_handler
Definition: ori.hpp:204
rank_t n_ranks()
Return the total number of processes.
Definition: ityr.hpp:107
#define ITYR_PROFILER_RECORD(event,...)
Definition: profiler.hpp:319
Definition: options.hpp:84
Definition: options.hpp:90
Definition: prof_events.hpp:51
Definition: release_manager.hpp:23
common::topology::rank_t target_rank
Definition: release_manager.hpp:24
epoch_t required_epoch
Definition: release_manager.hpp:25