16 inline std::unique_ptr<win>
create_win(T* baseptr, std::size_t count) {
17 if constexpr (std::is_void_v<T>) {
28 const win& target_win,
30 std::size_t target_disp) {
31 static_assert(!std::is_void_v<T>);
33 instance::get().get_nb(origin_win,
reinterpret_cast<std::byte*
>(origin_addr),
sizeof(T) * count,
34 target_win, target_rank, target_disp);
41 const win& target_win,
43 std::size_t target_disp) {
44 static_assert(!std::is_void_v<T>);
46 instance::get().get_nb(
reinterpret_cast<std::byte*
>(origin_addr),
sizeof(T) * count,
47 target_win, target_rank, target_disp);
54 const win& target_win,
56 std::size_t target_disp) {
57 static_assert(!std::is_void_v<T>);
59 instance::get().put_nb(origin_win,
reinterpret_cast<const std::byte*
>(origin_addr),
sizeof(T) * count,
60 target_win, target_rank, target_disp);
65 inline void put_nb(
const T* origin_addr,
67 const win& target_win,
69 std::size_t target_disp) {
70 static_assert(!std::is_void_v<T>);
72 instance::get().put_nb(
reinterpret_cast<const std::byte*
>(origin_addr),
sizeof(T) * count,
73 target_win, target_rank, target_disp);
static auto & get()
Definition: util.hpp:180
void get_nb(const win &origin_win, T *origin_addr, std::size_t count, const win &target_win, int target_rank, std::size_t target_disp)
Definition: rma.hpp:25
void flush(const win &target_win)
Definition: rma.hpp:76
std::unique_ptr< win > create_win(T *baseptr, std::size_t count)
Definition: rma.hpp:16
ITYR_RMA_IMPL::win win
Definition: rma.hpp:13
void put_nb(const win &origin_win, const T *origin_addr, std::size_t count, const win &target_win, int target_rank, std::size_t target_disp)
Definition: rma.hpp:51
#define ITYR_PROFILER_RECORD(event,...)
Definition: profiler.hpp:319
Definition: prof_events.hpp:84
Definition: prof_events.hpp:74
Definition: prof_events.hpp:79