Dynamo NIXL Connect#
Dynamo connect provides utilities for using the NIXL base RDMA subsystem via a set of Python classes.
The primary goal of this library to simplify the integration of NIXL based RDMA into inference applications.
The dynamo.nixl_connect
library can be imported by any Dynamo container hosted application.
import dynamo.nixl_connect
All operations using the NIXL Connect library begin with the Connector
class and the type of operation required.
There are four types of supported operations:
Register local readable memory:
Register local memory buffer(s) with the RDMA subsystem to enable a remote worker to read from.
Register local writable memory:
Register local memory buffer(s) with the RDMA subsystem to enable a remote worker to write to.
Read from registered, remote memory:
Read remote memory buffer(s), registered by a remote worker to be readable, into local memory buffer(s).
Write to registered, remote memory:
Write local memory buffer(s) to remote memory buffer(s) registered by a remote worker to writable.
By connecting correctly paired operations, high-throughput GPU Direct RDMA data transfers can be completed. Given the list above, the correct pairing of operations would be 1 & 3 or 2 & 4. Where one side is a “(read|write)-able operation” and the other is its correctly paired “(read|write) operation”. Specifically, a read operation must be paired with a readable operation, and a write operation must be paired with a writable operation.
sequenceDiagram participant LocalWorker participant RemoteWorker participant NIXL LocalWorker ->> NIXL: Register memory (Descriptor) RemoteWorker ->> NIXL: Register memory (Descriptor) LocalWorker ->> LocalWorker: Create Readable/WritableOperation LocalWorker ->> RemoteWorker: Send RDMA metadata (via HTTP/TCP+NATS) RemoteWorker ->> NIXL: Begin Read/WriteOperation with metadata NIXL -->> RemoteWorker: Data transfer (RDMA) RemoteWorker -->> LocalWorker: Notify completion (unblock awaiter)