hipObject: RDMA-Accelerated S3 Object Storage for GPUs#
Warning
hipObject is an experimental library. It is not intended for production use.
Introduction#
hipObject enables direct data transfers between AMD GPU
VRAM and S3-compatible object storage using RDMA over
RoCEv2. It interoperates with NVIDIA cuObject-equipped
storage servers via the x-amz-rdma-token S3 header
protocol, providing a vendor-neutral client for
GPU-direct object storage.
Architecture#
hipObject separates control and data planes:
Control plane: Standard S3 REST requests augmented with
x-amz-rdma-token/x-amz-rdma-replyheaders, made by the application’s S3 client.Data plane: RDMA READ/WRITE over RoCEv2 RC transport directly between GPU VRAM and storage server buffers.
See Architecture for how the library works.
Transfers#
hipObject doesn’t make S3 requests. The application’s S3
client sends each request, with an RDMA token from
hipObject in its x-amz-rdma-token header, and the
server moves the data by RDMA:
Call |
The application’s S3 request |
The server |
|---|---|---|
|
GetObject, for a whole object or a byte range |
RDMA WRITEs into the buffer |
|
PutObject, or UploadPart of a multipart upload |
RDMA READs from the buffer |
The request selects the object, and the part of it, to transfer; the token only describes the buffer. The buffer can be in GPU or host memory.
Getting Started#
Building hipObject covers building and installing hipObject,
and using it from a CMake project. The README’s
Quick Start is a short program that reads an object into
GPU memory, and the examples, which are installed in
share/doc/hipobject<mm>/examples, are complete programs
that make their S3 requests with libcurl.
License#
MIT License