UCX (Unified Communication X) is a high-performance communication framework
for modern HPC and data-intensive workloads. It provides low-latency,
high-bandwidth messaging and remote-memory-access primitives across a wide
range of transports, including shared memory, TCP/IP, and RDMA-capable
interconnects such as InfiniBand and RoCE (when supported by the platform).
UCX is commonly used as a communication substrate for MPI, OpenSHMEM, and
other distributed runtimes. It exposes a set of layered APIs (UCP/UCT/UCS/UCM)
to balance portability and performance while enabling optimized transport
selection, rendezvous protocols, and progress models.
===> The following configuration options are available for ucx-1.22.0_4:
DOCS=on: Build and/or install documentation
EXAMPLES=on: Build and/or install examples
FUSE=on: FUSE (Filesystem in Userspace) support
IBVERBS=off: Enable InfiniBand/RDMA (verbs) transport
IODEMO=on: Install io_demo test application
PERFTEST=on: Install ucx_perftest benchmarks
UMAD=off: Build/install perftest MAD plugin (umad)
===> Use 'make config' to modify these settings
net/ucx: fix build on powerpc64le
Backport upstream f49b2479db46, which includes ucs/sys/math.h for
UCS_INFINITY in ucs/time/time.h. On ppc64 nothing else pulls it in.
net/ucx: Improve FreeBSD ucx_vfs support
- replace Linux-specific fusermount3 with mount_fusefs/umount
- use FreeBSD-compatible FUSE capability detection
- fix UNIX socket ancillary data handling for SCM_RIGHTS and peer
credentials on FreeBSD
This allows ucx_vfs to start and communicate correctly on FreeBSD.
PR: 297093
Reported-by: Laurent Chardon <laurent@FreeBSD.org>
Reviewed by: thierry (mentor)
Approved by: thierry (mentor)
net/ucx: Fix VFS inotify watch on FreeBSD
IN_IGNORED is generated when a watch is removed and should not be
included in the inotify_add_watch request mask. FreeBSD rejects that
mask with EINVAL.
Remove the FreeBSD error workaround, which returned UCS_OK and caused
the VFS thread to retry in a tight loop.
PR: 296182
Reported by: thierry
Reviewed by: thierry (mentor),
Generic Rikka <rikka.goering@outlook.de> (maintainer)
Tested by: thierry (mentor),
Generic Rikka <rikka.goering@outlook.de> (maintainer)
Approved by: thierry (mentor)
net/ucx: Fix mm signal socket binding on FreeBSD
Replace Linux-style UNIX domain socket autobind logic in the mm
signaling path with explicit pathname-based binding on FreeBSD and
remove the socket path during cleanup.
This fixes FreeBSD runtime failures in the mm shared-memory signaling
path.
PR: 293867
Sponsored by: UNIS Labs
MFH: 2026Q2
: Update =>
Changelog:
PR:
Sponsored by: UNIS Labs
net/ucx: Fix FreeBSD UCM relocation handling
On FreeBSD, dynamic-section pointers observed through dl_iterate_phdr()
for shared objects need to be rebased by dlpi_addr before dereference.
Also fix the PT_LOAD end range calculation to include the object base
address when tracking the library address span.
This fixes runtime failures in UCM relocation patching on FreeBSD.
PR: 293867
Sponsored by: UNIS Labs
MFH: 2026Q2
net/ucx: Harden async thread state handling
Avoid dereferencing the global async thread context when startup or
teardown did not complete successfully by returning UCS_ERR_NO_ELEM for
operations that require an active thread and by only publishing thread_p
on successful start.
This prevents invalid access paths during async thread error handling.
PR: 293867
Sponsored by: UNIS Labs
MFH: 2026Q2
net/ucx: Fix FreeBSD runtime portability issues
Adjust several Linux-specific runtime assumptions in UCX for FreeBSD:
- use FreeBSD-specific network interface handling where Linux sysfs logic
is not available
- avoid Linux-only IPOIB and bridge detection paths
- improve pthread_create() error reporting
- provide FreeBSD fallbacks for memory remapping and affinity helpers
This fixes multiple runtime failures and device discovery issues on FreeBSD.
PR: 293867
Sponsored by: UNIS Labs
MFH: 2026Q2
net/ucx: fix build on FreeBSD 13.5 by defining s6_addr32 shim
FreeBSD's struct in6_addr does not provide s6_addr32 directly. Add a small
shim in src/uct/ib/base/ib_device.c to map s6_addr32 to the FreeBSD layout
(__u6_addr.__u6_addr32) when s6_addr32 is not already available.
PR: 293429
Tested by: kib
MFH: 2026Q1
net/ucx: Unified Communication X for high-performance messaging
UCX (Unified Communication X) is a high-performance communication framework
for modern HPC and data-intensive workloads. It provides low-latency,
high-bandwidth messaging and remote-memory-access primitives across a wide
range of transports, including shared memory, TCP/IP, and RDMA-capable
interconnects such as InfiniBand and RoCE (when supported by the platform).
UCX is commonly used as a communication substrate for MPI, OpenSHMEM, and
other distributed runtimes. It exposes a set of layered APIs (UCP/UCT/UCS/UCM)
to balance portability and performance while enabling optimized transport
selection, rendezvous protocols, and progress models.
PR: 292889