UCX++
|
Represents a remote memory region. Note that this does not contain the remote address. It should be kept by the user. More...
#include <ucxpp/memory.h>
Public Member Functions | |
remote_memory_handle (std::shared_ptr< endpoint > endpoint, void const *packed_rkey_buffer) | |
Construct a new remote memory handle object. All subsequent remote memory access will happen on the given endpoint. More... | |
remote_memory_handle (remote_memory_handle &&other) | |
Construct a new remote memory handle object. More... | |
rma_put_awaitable | put (void const *buffer, size_t length, uint64_t remote_addr) const |
Write to the remote memory region. More... | |
rma_get_awaitable | get (void *buffer, size_t length, uint64_t remote_addr) const |
Read from the remote memory region. More... | |
rma_put_awaitable | write (void const *buffer, size_t length, uint64_t remote_addr) const |
rma_get_awaitable | read (void *buffer, size_t length, uint64_t remote_addr) const |
std::shared_ptr< endpoint > | endpoint_ptr () const |
Get the memory region's endpoint object. More... | |
ucp_rkey_h | handle () const |
Get the native UCX rkey handle. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_fetch_add (uint64_t remote_addr, T const &delta, T &old_value) const |
Atomically fetch and add a value to the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_fetch_and (uint64_t remote_addr, T const &bits, T &old_value) const |
Atomically fetch and AND a value to the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_fetch_or (uint64_t remote_addr, T const &bits, T &old_value) const |
Atomically fetch and OR a value to the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_fetch_xor (uint64_t remote_addr, T const &bits, T &old_value) const |
Atomically fetch and XOR a value to the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_add (uint64_t remote_addr, T const &delta) const |
Atomically add to a value in the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_and (uint64_t remote_addr, T const &bits) const |
Atomically AND a value in the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_or (uint64_t remote_addr, T const &bits) const |
Atomically OR to a value in the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_xor (uint64_t remote_addr, T const &bits) const |
Atomically XOR a value to the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_swap (uint64_t remote_addr, T const &new_value, T &old_value) const |
Atomically swap a value in the remote memory region. More... | |
template<class T > | |
rma_atomic_awaitable< T > | atomic_compare_swap (uint64_t raddr, T const &expected, T &desired_and_old) const |
Atomically compare and swap a value in the remote memory region. More... | |
~remote_memory_handle () | |
Destroy the remote memory handle object and the associated rkey handle. | |
![]() | |
noncopyable (noncopyable &&)=default | |
noncopyable (noncopyable const &)=delete | |
noncopyable & | operator= (noncopyable const &)=delete |
noncopyable & | operator= (noncopyable &&)=default |
Represents a remote memory region. Note that this does not contain the remote address. It should be kept by the user.
ucxpp::remote_memory_handle::remote_memory_handle | ( | std::shared_ptr< endpoint > | endpoint, |
void const * | packed_rkey_buffer | ||
) |
Construct a new remote memory handle object. All subsequent remote memory access will happen on the given endpoint.
endpoint | UCX endpoint |
packed_rkey_buffer | Packed remote key buffer received from remote peer |
ucxpp::remote_memory_handle::remote_memory_handle | ( | remote_memory_handle && | other | ) |
Construct a new remote memory handle object.
other | Another remote memory handle to move from |
|
inline |
Atomically add to a value in the remote memory region.
T | The type of the value to add, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to add to |
delta | The value to add |
|
inline |
Atomically AND a value in the remote memory region.
T | The type of the value to AND, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to AND to |
delta | The other operand of the AND operation |
|
inline |
Atomically compare and swap a value in the remote memory region.
T | The type of the value to swap, should be of 4 bytes or 8 bytes long |
raddr | The remote address to swap |
expected | The expected value to compare against |
desired_and_old | A reference to a variable to store the desired new value and the old value swapped out |
|
inline |
Atomically fetch and add a value to the remote memory region.
T | The type of the value to add, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to add to |
delta | The value to add |
old_value | A reference to a variable to store the old value |
|
inline |
Atomically fetch and AND a value to the remote memory region.
T | The type of the value to AND, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to AND to |
delta | The other operand of the AND operation |
old_value | A reference to a variable to store the old value |
|
inline |
Atomically fetch and OR a value to the remote memory region.
T | The type of the value to OR, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to OR to |
delta | The other operand of the OR operation |
old_value | A reference to a variable to store the old value |
|
inline |
Atomically fetch and XOR a value to the remote memory region.
T | The type of the value to XOR, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to XOR to |
delta | The other operand of the XOR operation |
old_value | A reference to a variable to store the old value |
|
inline |
Atomically OR to a value in the remote memory region.
T | The type of the value to OR, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to OR to |
delta | The other operand of the OR operation |
|
inline |
Atomically swap a value in the remote memory region.
T | The type of the value to swap, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to swap |
new_value | The new value to swap in |
old_value | A reference to a variable to store the old value |
|
inline |
Atomically XOR a value to the remote memory region.
T | The type of the value to XOR, should be of 4 bytes or 8 bytes long |
remote_addr | The remote address to XOR to |
delta | The other operand of the XOR operation |
std::shared_ptr< endpoint > ucxpp::remote_memory_handle::endpoint_ptr | ( | ) | const |
Get the memory region's endpoint object.
rma_get_awaitable ucxpp::remote_memory_handle::get | ( | void * | buffer, |
size_t | length, | ||
uint64_t | remote_addr | ||
) | const |
Read from the remote memory region.
buffer | Local buffer to read into |
length | Length of the buffer |
remote_addr | Remote address to read from |
ucp_rkey_h ucxpp::remote_memory_handle::handle | ( | ) | const |
Get the native UCX rkey handle.
rma_put_awaitable ucxpp::remote_memory_handle::put | ( | void const * | buffer, |
size_t | length, | ||
uint64_t | remote_addr | ||
) | const |
Write to the remote memory region.
buffer | Local buffer to write from |
length | Length of the buffer |
remote_addr | Remote address to write to |
rma_get_awaitable ucxpp::remote_memory_handle::read | ( | void * | buffer, |
size_t | length, | ||
uint64_t | remote_addr | ||
) | const |
rma_put_awaitable ucxpp::remote_memory_handle::write | ( | void const * | buffer, |
size_t | length, | ||
uint64_t | remote_addr | ||
) | const |