OpenUCX

Unified Communication X (UCX) is an award winning, optimized production-proven communication framework for modern, high-bandwidth and low-latency networks.

UCX exposes a set of abstract communication primitives that utilize the best of available hardware resources and offloads. These include RDMA (InfiniBand and RoCE), TCP, GPUs, shared memory, and network atomic operations.

UCX facilitates rapid development by providing a high-level API, masking the low-level details, while maintaining high-performance and scalability.

UCX implements best practices for transfer of messages of all sizes, based on accumulated experience gained from applications running on the world’s largest datacenters and supercomputers. The full list of features and capabilities can be found here.

UCX is a member of UCF consortium.

UCX layer diagram

Quick start

The following commands will download UCX latest v1.16.0 release, build the code, and run a simple client/server example:

$ wget https://github.com/openucx/ucx/releases/download/v1.16.0/ucx-1.16.0.tar.gz
$ tar xzf ucx-1.16.0.tar.gz
$ cd ucx-1.16.0
$ ./contrib/configure-release --prefix=$PWD/install
$ make -j8 install

$ gcc examples/ucp_client_server.c -lucp -lucs -o ucp_client_server \
      -Iinstall/include -Linstall/lib
$ export LD_LIBRARY_PATH=$PWD/install/lib
$ ./ucp_client_server &
$ ./ucp_client_server -a <ip-addr>   # <ip-addr>: IP address of a local RoCE or IPoIB interface
...
----- UCP TEST SUCCESS -------

UCX Client-Server Hello World

------------------------------