Writable Operation

Exposes local buffers for a remote worker to write via a paired WriteOperation.
View as Markdown

An operation which enables a remote worker to write data to the local worker.

To create the operation, a set of local Descriptor objects must be provided which reference memory intended to receive data from a remote worker. Once created, the memory referenced by the provided descriptors becomes immediately writable by a remote worker with the necessary metadata. The NIXL metadata (RdmaMetadata) required to access the memory referenced by the provided descriptors is accessible via the operations .metadata() method. Once acquired, the metadata needs to be provided to a remote worker via a secondary channel, most likely HTTP or TCP+NATS.

Disposal of the object will instruct the NIXL subsystem to cancel the operation, therefore the operation should be awaited until completed unless cancellation is intended. Cancellation is handled asynchronously.

Example Usage

1 async def recv_data(
2 self,
3 local_tensor: torch.Tensor
4 ) -> None:
5 descriptor = dynamo.nixl_connect.Descriptor(local_tensor)
6
7 with await self.connector.create_writable(descriptor) as write_op:
8 op_metadata = write_op.metadata()
9
10 # Send the metadata to the remote worker via sideband communication.
11 await self.request_remote_data(op_metadata)
12 # Wait the remote worker to complete its write operation to local_tensor.
13 # AKA receive data from remote worker.
14 await write_op.wait_for_completion()

Methods

metadata

1def metadata(self) -> RdmaMetadata

Generates and returns the NIXL metadata (RdmaMetadata) required for a remote worker to write to the operation. Once acquired, the metadata needs to be provided to a remote worker via a secondary channel, most likely HTTP or TCP+NATS.

wait_for_completion

1async def wait_for_completion(self) -> None

Blocks the caller until the operation has received a completion signal from a remote worker.

Properties

status
OperationStatus

The current state (aka. status) of the operation. See OperationStatus.