Component holding a UCP rkey (remote key). More...
#include <remote_key.h>
Public Member Functions | |
ucp_rkey_h | getHandle () |
Get the underlying ucp_rkey_h handle. More... | |
size_t | getSize () const |
Get the size of the memory allocation. More... | |
uint64_t | getBaseAddress () |
Get the base address of the memory allocation. More... | |
SerializedRemoteKey | serialize () const |
Serialize the remote key. More... | |
![]() | |
void | setParent (std::shared_ptr< Component > parent) |
Set the internal parent reference. More... | |
std::shared_ptr< Component > | getParent () const |
Get the internal parent reference. More... | |
Friends | |
std::shared_ptr< RemoteKey > | createRemoteKeyFromMemoryHandle (std::shared_ptr< MemoryHandle > memoryHandle) |
Constructor for std::shared_ptr<ucxx::RemoteKey> from local memory handle. More... | |
std::shared_ptr< RemoteKey > | createRemoteKeyFromSerialized (std::shared_ptr< Endpoint > endpoint, SerializedRemoteKey serializedRemoteKey) |
Constructor for std::shared_ptr<ucxx::RemoteKey> from remote. More... | |
Additional Inherited Members | |
![]() | |
std::shared_ptr< Component > | _parent {nullptr} |
A reference-counted pointer to the parent. | |
Component holding a UCP rkey (remote key).
To provide RMA (Remote Memory Access) to memory handles, UCP packs their information in the form of ucp_rkey_h
(remote key, or rkey for short). This class encapsulates that object and provides methods to simplify its handling, both locally and remotely including (de-)serialization for transfers over the wire and reconstruction of the object on the remote process.
uint64_t ucxx::RemoteKey::getBaseAddress | ( | ) |
Get the base address of the memory allocation.
Get the base address of the memory allocation the remote key packs, which is going to be used as the remote address to put or get memory via the ucxx::Endpoint::memPut()
or ucxx::Endpoint::memGet()
methods.
ucp_rkey_h ucxx::RemoteKey::getHandle | ( | ) |
Get the underlying ucp_rkey_h
handle.
Lifetime of the ucp_rkey_h
handle is managed by the ucxx::RemoteKey
object and its ownership is non-transferrable. Once the ucxx::RemoteKey
is destroyed the handle becomes invalid and so does the address to the remote memory handle it points to, it is the user's responsibility to ensure the owner's lifetime while using the handle.
ucp_mem_h
handle. size_t ucxx::RemoteKey::getSize | ( | ) | const |
Get the size of the memory allocation.
Get the size of the memory allocation the remote key packs, which is at least the number of bytes specified with the size
argument passed to createMemoryHandle()
.
SerializedRemoteKey ucxx::RemoteKey::serialize | ( | ) | const |
Serialize the remote key.
Serialize the remote key to allow over-the-wire transfer and subsequent reconstruction of the object in the remote process.
|
friend |
Constructor for std::shared_ptr<ucxx::RemoteKey>
from local memory handle.
The constructor for a std::shared_ptr<ucxx::RemoteKey>
object from a local std::shared_ptr<ucxx::MemoryHandle>
, mapping a local memory buffer to be made accessible from a remote endpoint to perform RMA (Remote Memory Access) on the memory.
ucxx::Error | if ucp_rkey_pack fails. |
[in] | memoryHandle | the memory handle mapped on the local process. |
shared_ptr<ucxx::RemoteKey>
object
|
friend |
Constructor for std::shared_ptr<ucxx::RemoteKey>
from remote.
The constructor for a std::shared_ptr<ucxx::RemoteKey>
object from a serialized std::shared_ptr<ucxx::RemoteKey>
, mapping a remote memory buffer to be made accessible via a local endpoint to perform RMA (Remote Memory Access) on the memory.
ucxx::Error | if ucp_ep_rkey_unpack fails. |
[in] | endpoint | the std::shared_ptr<Endpoint> parent component. |
[in] | serializedRemoteKey | the remote key that was serialized by the owner of the memory handle and transferred over-the-wire for reconstruction and remote access. |
shared_ptr<ucxx::RemoteKey>
object