|
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. | |
Public Member Functions inherited from ucxpp::noncopyable | |
| 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 |