Unified Communication X (UCX) provides an optimized communication layer for Message Passing (MPI), PGAS/OpenSHMEM libraries and RPC/data-centric applications.
UCX utilizes high-speed networks for inter-node communication, and shared memory mechanisms for efficient intra-node communication.
Building UCX is typically a combination of running "configure" and "make". Execute the following commands to install the UCX system from within the directory at the top of the tree:
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
NOTE: Compiling support for various networks or other specific hardware may require additional command line flags when running configure.
$ ./autogen.sh
$ ./contrib/configure-devel --prefix=$PWD/install-debug
*** NOTE: Developer builds of UCX typically include a large performance penalty at run-time because of extra debugging code.
$ make -C test/gtest test
$ contrib/buildrpm.sh -s -b
$ dpkg-buildpackage -us -uc
$ make docs
Start server:
$ ./src/tools/perf/ucx_perftest -c 0
Connect client:
$ ./src/tools/perf/ucx_perftest <server-hostname> -t tag_lat -c 1
Note: the -c
flag sets CPU affinity. If running both commands on same host, make sure you set the affinity to different CPU cores.
UCX is licensed as:
In order to contribute to UCX, please sign up with an appropriate Contributor Agreement.
Follow these instructions when submitting contributions and changes.
To reference UCX in a publication, please use the following entry:
@inproceedings{shamis2015ucx,
title={UCX: an open source framework for HPC network APIs and beyond},
author={Shamis, Pavel and Venkata, Manjunath Gorentla and Lopez, M Graham and Baker, Matthew B and Hernandez, Oscar and Itigin, Yossi and Dubman, Mike and Shainer, Gilad and Graham, Richard L and Liss, Liran and others},
booktitle={2015 IEEE 23rd Annual Symposium on High-Performance Interconnects},
pages={40--43},
year={2015},
organization={IEEE}
}
To reference the UCX website:
@misc{openucx-website,
title = {{The Unified Communication X Library}},
key = {{{The Unified Communication X Library}},
howpublished = {{\url{http://www.openucx.org}}}
}
Component | Role | Description |
---|---|---|
UCP | Protocol | Implements high-level abstractions such as tag-matching, streams, connection negotiation and establishment, multi-rail, and handling different memory types |
UCT | Transport | Implements low-level communication primitives such as active messages, remote memory access, and atomic operations |
UCS | Services | A collection of data structures, algorithms, and system utilities for common use |
UCM | Memory | Intercepts memory allocation and release events, used by the memory registration cache |
- Infiniband
- Omni-Path
- RoCE
- Cray Gemini and Aries
- CUDA
- ROCm
- Shared Memory
- TCP/IP