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.
$ ./autogen.sh
$ ./contrib/configure-devel
$ make
$ make -C test/gtest test
Start server:
$ ./src/tools/perf/ucx_perftest -c 0
Connect client:
$ ./src/tools/perf/ucx_perftest <server-hostname> -t tag_lat -c 0
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
Based on performance consideration, UCX DO NOT provide the functionalities related to transmission security.
There are three optimized collective operations:
- MPI_Allreduce
- MPI_Bcast
- MPI_Barrier
New algorithms are as follows:
- Binomial tree
- Ring
- Recursive
- Topo-aware Binomial tree
- Topo-aware K-nomial tree
- Topo-aware Recursive + Binomial(intra)
- Topo-aware Recursive + K-nomial(intra)
Select specific algorithm with parameters which is showed in the table below.
Bcast:
UCX_BUILTIN_BCAST_ALGORITHM | Algorithm |
---|---|
1 | Binomial tree |
2 | Topo-aware Binomial tree |
3 | Topo-aware K-nomial tree |
4 | Topo-aware K-nomial tree + Binomial tree(intra) |
Allreduce:
UCX_BUILTIN_ALLREDUCE_ALGORITHM | Algorithm |
---|---|
1 | Recursive |
2 | Topo-aware Recursive + Binomial(intra)(Node) |
3 | Topo-aware Recursive + Binomial(intra)(Socket) |
4 | Ring |
5 | Topo-aware Recursive + K-nomial (intra)(Node) |
6 | Topo-aware Recursive + K-nomial (intra)(Socket) |
7 | Topo-aware K-nomial(Node) |
8 | Topo-aware K-nomial(Socket) |
Barrier:
UCX_BUILTIN_BARRIER_ALGORITHM | Algorithm |
---|---|
1 | Recursive |
2 | Topo-aware Recursive + Binomial(intra)(Node) |
3 | Topo-aware Recursive + Binomial(intra)(Socket) |
4 | Topo-aware Recursive + K-nomial (intra)(Node) |
5 | Topo-aware Recursive + K-nomial (intra)(Socket) |
6 | Topo-aware K-nomial(Node) |
7 | Topo-aware K-nomial(Socket) |