What is hip-ucxx?#
2026-06-11
3 min read time
UCXX is a C++ wrapper library around UCX (Unified Communication X), providing a modern object-oriented API for high-performance inter-process and inter-node communication. UCX itself is a low-level C library for point-to-point networking that supports a wide range of transports (InfiniBand, RoCE, shared memory, TCP, and more). UCXX adds C++ abstractions on top of the UCX C library, making it significantly easier to build communication-intensive applications.
hip-ucxx is part of the AMD ROCm Data Science toolkit (ROCm-DS) and serves as the communication layer for distributed GPU workloads in the ROCm-DS ecosystem. hip-ucxx is the AMD ROCm-native port of the RAPIDS UCXX project. It has been adapted for the ROCm/HIP stack while preserving the directory structure, file naming, and API naming to minimize porting friction for developers migrating their workloads to AMD platforms.
Key highlights in hip-ucxx v0.1.0 include:
Full integration with the ROCm-DS ecosystem. hip-ucxx serves as the communication layer for distributed GPU computing across ROCm-DS components.
Multiple transport methods:
Tag matching: Tagged send/receive for message-based communication with sender-receiver coordination.
Stream: Ordered byte-stream communication over an endpoint.
Active messages (AM): Enables execution of user-defined callbacks on the receiver side upon message arrival.
Remote memory access (RMA/RDMA): Direct memory read/write operations across processes without involving the remote CPU.
GPU-direct communication enables GPU-to-GPU direct data transfers without staging through host memory, reducing latency and increasing throughput.
Python async API built on
asyncioand a drop-in Dask Distributed backend (distributed-ucxx) that enables Dask to use UCX for inter-worker communication in distributed GPU computing pipelines.Supports hipMM device buffers for efficient GPU memory management during transfers.
Modules#
The following table summarizes the C++ modules available in hip-ucxx:
Module |
Headers |
Description |
|---|---|---|
cpp/include/ucxx/context.h, worker.h, address.h, config.h, component.h |
UCP context, worker, and address management. Configuration handling, base component class, and logging. |
|
UCP endpoint and listener management for establishing and accepting connections. |
||
cpp/include/ucxx/request_tag.h, request_stream.h, request_am.h, request_mem.h |
Non-blocking send/receive operations via tag, stream, active message, and remote memory access APIs. Also includes flush and endpoint close requests. |
|
Buffer types (host and hipMM device buffers), memory handle registration for RMA, and remote key management. |
||
Future-based asynchronous completion tracking, request notification, delayed request submission, and worker progress thread management. |
||
Type definitions, multi-buffer header metadata, exception handling, and miscellaneous helper utilities (socket address, file descriptor, UCX wrappers). |