openucx/ucx logo

openucx/ucx

Free

Unified Communication X (mailing list - https://elist.ornl.gov/mailman/listinfo/ucx-group)

FreeFree tier
Type
Open Source

About openucx/ucx

Unified Communication X (UCX) is an award-winning, production-proven communication framework designed for modern high-bandwidth and low-latency networks. It exposes a set of abstract communication primitives that intelligently utilize the best available hardware resources and offloads, including RDMA (InfiniBand and RoCE), TCP, GPUs, shared memory, and network atomic operations. UCX is widely used in high-performance computing (HPC) environments to efficiently orchestrate data transfers across diverse interconnects and accelerators. The project is actively maintained on GitHub with extensive documentation, build instructions, and performance testing tools.

Key Features

Abstract communication primitives that leverage best hardware resources and offloads
Support for RDMA (InfiniBand and RoCE), TCP, GPUs, shared memory, and network atomic operations
Production-proven and award-winning performance
Optimized for modern high-bandwidth, low-latency networks
Includes performance testing tools (ucx_perftest) and unit tests
Supports multiple build configurations: release, developer, RPM, DEB
Integration with MPI implementations like OpenMPI and MPICH

Pros & Cons

Pros
  • Award-winning and production-proven in demanding HPC environments
  • Supports a wide range of transports (RDMA, TCP, shared memory, GPUs)
  • Actively maintained with a large community (1.7k stars, 578 forks)
  • Open source with permissive licensing (BSD-style)
  • Comprehensive build and installation documentation
  • Includes performance benchmarking utilities
Cons
  • Known bug in version 1.8.0 causing data corruption when TCP and shared memory transports are used together
  • Can hang with glibc versions 2.25-2.29 due to pthread_rwlock bugs
  • Requires compilation from source with specific flags for optimal hardware support
  • Steeper learning curve for non-HPC users due to low-level primitives

Best For

High-performance computing (HPC) clustersData center networking with InfiniBand or RoCEGPU-to-GPU communication across nodesAccelerating distributed applications requiring low-latency messagingResearch and development in high-performance networking

FAQ

Does UCX have any known bugs?
Yes, version 1.8.0 has a known bug that may cause data corruption when TCP transport is used in conjunction with shared memory transport. Upgrading to version 1.9.0 or later is advised. Earlier versions (before 1.8.0) do not have this bug.
Can UCX hang with certain glibc versions?
UCX may hang with glibc versions 2.25-2.29 due to known bugs in the pthread_rwlock functions. When such hangs occur, a UCX thread gets stuck in pthread_rwlock_rdlock called by ucs_rcache_get.
How do I build UCX from source?
Release builds can be built using ./contrib/configure-release and make. Developer builds use ./contrib/configure-devel. For detailed instructions, refer to the building documentation in the README.
What networks does UCX support?
UCX supports RDMA (InfiniBand and RoCE), TCP, GPUs, shared memory, and network atomic operations. It abstracts these into a unified communication API.