6#ifndef IPPL_MPI_WINDOW_H
7#define IPPL_MPI_WINDOW_H
20 template <TargetComm Target>
26 template <TargetComm Target>
32 template <TargetComm Target>
43 operator MPI_Win*()
noexcept {
return &
win_m; }
45 operator const MPI_Win*()
const noexcept {
return &
win_m; }
47 template <std::contiguous_iterator Iter>
50 template <std::contiguous_iterator Iter>
53 template <std::contiguous_iterator Iter>
56 void fence(
int asrt = 0);
58 template <std::contiguous_iterator Iter>
59 void put(Iter
first, Iter last,
int dest,
unsigned int pos,
63 void put(
const T* value,
int dest,
unsigned int pos,
Request* request =
nullptr);
65 template <std::contiguous_iterator Iter>
66 void get(Iter
first, Iter last,
int source,
unsigned int pos,
70 void get(
T* value,
int source,
unsigned int pos,
Request* request =
nullptr);
84 void lock(
int locktype,
int rank,
int asrt = 0);
constexpr KOKKOS_INLINE_FUNCTION auto first()
void get(Iter first, Iter last, int source, unsigned int pos, Request *request=nullptr)
bool create(const Communicator &comm, Iter first, Iter last)
bool attach(const Communicator &comm, Iter first, Iter last)
void lock(int locktype, int rank, int asrt=0)
void put(Iter first, Iter last, int dest, unsigned int pos, Request *request=nullptr)