|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 16-Dec-2021 | - |
| .github/ | H | 22-Sep-2020 | - | 79 | 61 |
| bindings/java/ | H | 22-Sep-2020 | - | 7,113 | 5,018 |
| buildlib/ | H | 22-Sep-2020 | - | 794 | 681 |
| config/ | H | 16-Dec-2021 | - | 11,303 | 10,144 |
| contrib/ | H | 22-Sep-2020 | - | 3,194 | 2,427 |
| debian/ | H | 22-Sep-2020 | - | 93 | 63 |
| docs/ | H | 22-Sep-2020 | - | 7,950 | 6,919 |
| examples/ | H | 16-Dec-2021 | - | 3,584 | 2,802 |
| src/ | H | 22-Sep-2020 | - | 196,467 | 141,306 |
| test/ | H | 22-Sep-2020 | - | 91,074 | 66,449 |
| .ctags | H A D | 22-Sep-2020 | 157 | 5 | 4 |
| .gitignore | H A D | 22-Sep-2020 | 1.3 KiB | 88 | 87 |
| .gitmodules | H A D | 22-Sep-2020 | 94 | 5 | 4 |
| AUTHORS | H A D | 22-Sep-2020 | 3.2 KiB | 109 | 106 |
| LICENSE | H A D | 22-Sep-2020 | 2.3 KiB | 38 | 34 |
| Makefile.am | H A D | 22-Sep-2020 | 2.5 KiB | 108 | 74 |
| Makefile.in | H A D | 16-Dec-2021 | 42.7 KiB | 1,242 | 1,095 |
| NEWS | H A D | 22-Sep-2020 | 16.7 KiB | 418 | 379 |
| README | H A D | 22-Sep-2020 | 6.1 KiB | 185 | 137 |
| README.md | H A D | 22-Sep-2020 | 6.1 KiB | 185 | 137 |
| aclocal.m4 | H A D | 16-Dec-2021 | 44.7 KiB | 1,252 | 1,136 |
| autogen.sh | H A D | 22-Sep-2020 | 524 | 41 | 33 |
| compile | H A D | 16-Dec-2021 | 7.2 KiB | 348 | 258 |
| config.guess | H A D | 16-Dec-2021 | 41.9 KiB | 1,422 | 1,230 |
| config.h.in | H A D | 16-Dec-2021 | 28.1 KiB | 990 | 703 |
| config.sub | H A D | 16-Dec-2021 | 35.1 KiB | 1,808 | 1,670 |
| configure | H A D | 16-Dec-2021 | 969.8 KiB | 33,698 | 28,023 |
| configure.ac | H A D | 22-Sep-2020 | 13.7 KiB | 417 | 365 |
| depcomp | H A D | 16-Dec-2021 | 23 KiB | 792 | 502 |
| install-sh | H A D | 16-Dec-2021 | 14.3 KiB | 502 | 327 |
| ltmain.sh | H A D | 16-Dec-2021 | 316.5 KiB | 11,148 | 7,979 |
| missing | H A D | 16-Dec-2021 | 6.7 KiB | 216 | 143 |
| ucx.pc.in | H A D | 22-Sep-2020 | 282 | 12 | 10 |
| ucx.spec.in | H A D | 22-Sep-2020 | 9 KiB | 328 | 275 |
README
1<div align="center">
2 <a href="http://www.openucx.org/"><img src="./docs/doxygen/UCX_Logo_930x933.png" width="200"></a>
3 <br>
4 <a href="https://twitter.com/intent/follow?screen_name=openucx"> <img src="https://img.shields.io/twitter/follow/openucx?style=social&logo=twitter" alt="follow on Twitter"></a>
5 <a href="https://openucx.github.io/ucx/api/latest/html/"><img src="docs/doxygen/api.svg"></a>
6 <a href='https://openucx.readthedocs.io/en/master/?badge=master'><img src='https://readthedocs.org/projects/openucx/badge/?version=master' alt='Documentation Status' />
7 <a href="https://github.com/openucx/ucx/releases/latest"><img src="docs/doxygen/release.svg"></a>
8</div>
9
10<!-- TOC generated by https://github.com/ekalinin/github-markdown-toc -->
11
12<hr>
13
14 * [Unified Communication X](#unified-communication-x)
15 * [Using UCX](#using-ucx)
16 * [Building and Running Internal Unit Tests](#building-and-running-internal-unit-tests)
17 * [UCX Performance Test](#ucx-performance-test)
18 * [Our Community](#our-community)
19 * [Licenses](#licenses)
20 * [Contributor Agreement and Guidelines](#contributor-agreement-and-guidelines)
21 * [UCX Publications](#ucx-publications)
22 * [UCX Architecture](#ucx-architecture)
23 * [Supported Transports](#supported-transports)
24 * [Supported CPU Architectures](#supported-cpu-architectures)
25
26<hr>
27
28# Unified Communication X
29
30Unified Communication X (UCX) provides an optimized communication
31layer for Message Passing ([MPI](https://www.mpi-forum.org/)),
32[PGAS](http://www.pgas.org/)/[OpenSHMEM](http://www.openshmem.org/)
33libraries and RPC/data-centric applications.
34
35UCX utilizes high-speed networks for inter-node communication, and
36shared memory mechanisms for efficient intra-node communication.
37
38## Using UCX
39
40### Release Builds
41
42Building UCX is typically a combination of running "configure" and "make".
43Execute the following commands to install the UCX system from within the
44directory at the top of the tree:
45
46```sh
47$ ./autogen.sh
48$ ./contrib/configure-release --prefix=/where/to/install
49$ make -j8
50$ make install
51```
52
53NOTE: Compiling support for various networks or other specific hardware may
54require additional command line flags when running configure.
55
56### Developer Builds
57
58```bash
59$ ./autogen.sh
60$ ./contrib/configure-devel --prefix=$PWD/install-debug
61```
62
63*** NOTE: Developer builds of UCX typically include a large performance
64penalty at run-time because of extra debugging code.
65
66### Running internal unit tests
67
68```sh
69$ make -C test/gtest test
70```
71
72### Build RPM package
73```bash
74$ contrib/buildrpm.sh -s -b
75```
76
77### Build DEB package
78```bash
79$ dpkg-buildpackage -us -uc
80```
81
82### Build Doxygen documentation
83```bash
84$ make docs
85```
86
87### OpenMPI and OpenSHMEM installation with UCX
88[Wiki page](http://github.com/openucx/ucx/wiki/OpenMPI-and-OpenSHMEM-installation-with-UCX)
89
90### MPICH installation with UCX
91[Wiki page](http://github.com/openucx/ucx/wiki/MPICH-installation-with-UCX)
92
93### UCX Performance Test
94
95Start server:
96
97```sh
98$ ./src/tools/perf/ucx_perftest -c 0
99```
100
101Connect client:
102
103```sh
104$ ./src/tools/perf/ucx_perftest <server-hostname> -t tag_lat -c 1
105```
106Note: the `-c` flag sets CPU affinity. If running both commands on same host, make sure you set the affinity to different CPU cores.
107
108## Our Community
109
110* [Project Website](http://www.openucx.org/)
111* [ReadTheDocs](https://openucx.readthedocs.io/en/master/)
112* [Github](http://www.github.com/openucx/ucx/)
113* [Software Releases](http://www.github.com/openucx/ucx/releases)
114* [Mailing List](https://elist.ornl.gov/mailman/listinfo/ucx-group)
115* [Twitter](https://twitter.com/openucx)
116
117## Licenses
118
119UCX is licensed as:
120
121* [BSD3](LICENSE)
122
123## Contributor Agreement and Guidelines
124
125In order to contribute to UCX, please sign up with an appropriate
126[Contributor Agreement](http://www.openucx.org/license/).
127
128Follow these
129[instructions](https://github.com/openucx/ucx/wiki/Guidance-for-contributors)
130when submitting contributions and changes.
131
132## UCX Publications
133
134To reference UCX in a publication, please use the following entry:
135
136```bibtex
137@inproceedings{shamis2015ucx,
138 title={UCX: an open source framework for HPC network APIs and beyond},
139 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},
140 booktitle={2015 IEEE 23rd Annual Symposium on High-Performance Interconnects},
141 pages={40--43},
142 year={2015},
143 organization={IEEE}
144}
145```
146
147To reference the UCX website:
148
149```bibtex
150@misc{openucx-website,
151 title = {{The Unified Communication X Library}},
152 key = {{{The Unified Communication X Library}},
153 howpublished = {{\url{http://www.openucx.org}}}
154}
155```
156
157## UCX Architecture
158
159![](docs/doxygen/Architecture.png)
160
161| Component | Role | Description |
162| :---: | :---: | --- |
163| UCP | Protocol | Implements high-level abstractions such as tag-matching, streams, connection negotiation and establishment, multi-rail, and handling different memory types |
164| UCT | Transport | Implements low-level communication primitives such as active messages, remote memory access, and atomic operations |
165| UCS | Services | A collection of data structures, algorithms, and system utilities for common use |
166| UCM | Memory | Intercepts memory allocation and release events, used by the memory registration cache |
167
168## Supported Transports
169
170* [Infiniband](https://www.infinibandta.org/)
171* [Omni-Path](https://www.intel.com/content/www/us/en/high-performance-computing-fabrics/omni-path-driving-exascale-computing.html)
172* [RoCE](http://www.roceinitiative.org/)
173* [Cray Gemini and Aries](https://www.cray.com/)
174* [CUDA](https://developer.nvidia.com/cuda-zone)
175* [ROCm](https://rocm.github.io/)
176* Shared Memory
177 * posix, sysv, [cma](https://dl.acm.org/citation.cfm?id=2616532), [knem](http://knem.gforge.inria.fr/), and [xpmem](https://github.com/hjelmn/xpmem)
178* TCP/IP
179
180## Supported CPU Architectures
181
182* [x86_64](https://en.wikipedia.org/wiki/X86-64)
183* [Power8/9](https://www.ibm.com/support/knowledgecenter/en/POWER9/p9hdx/POWER9welcome.htm)
184* [Arm v8](https://www.arm.com/products/silicon-ip-cpu)
185
README.md
1<div align="center">
2 <a href="http://www.openucx.org/"><img src="./docs/doxygen/UCX_Logo_930x933.png" width="200"></a>
3 <br>
4 <a href="https://twitter.com/intent/follow?screen_name=openucx"> <img src="https://img.shields.io/twitter/follow/openucx?style=social&logo=twitter" alt="follow on Twitter"></a>
5 <a href="https://openucx.github.io/ucx/api/latest/html/"><img src="docs/doxygen/api.svg"></a>
6 <a href='https://openucx.readthedocs.io/en/master/?badge=master'><img src='https://readthedocs.org/projects/openucx/badge/?version=master' alt='Documentation Status' />
7 <a href="https://github.com/openucx/ucx/releases/latest"><img src="docs/doxygen/release.svg"></a>
8</div>
9
10<!-- TOC generated by https://github.com/ekalinin/github-markdown-toc -->
11
12<hr>
13
14 * [Unified Communication X](#unified-communication-x)
15 * [Using UCX](#using-ucx)
16 * [Building and Running Internal Unit Tests](#building-and-running-internal-unit-tests)
17 * [UCX Performance Test](#ucx-performance-test)
18 * [Our Community](#our-community)
19 * [Licenses](#licenses)
20 * [Contributor Agreement and Guidelines](#contributor-agreement-and-guidelines)
21 * [UCX Publications](#ucx-publications)
22 * [UCX Architecture](#ucx-architecture)
23 * [Supported Transports](#supported-transports)
24 * [Supported CPU Architectures](#supported-cpu-architectures)
25
26<hr>
27
28# Unified Communication X
29
30Unified Communication X (UCX) provides an optimized communication
31layer for Message Passing ([MPI](https://www.mpi-forum.org/)),
32[PGAS](http://www.pgas.org/)/[OpenSHMEM](http://www.openshmem.org/)
33libraries and RPC/data-centric applications.
34
35UCX utilizes high-speed networks for inter-node communication, and
36shared memory mechanisms for efficient intra-node communication.
37
38## Using UCX
39
40### Release Builds
41
42Building UCX is typically a combination of running "configure" and "make".
43Execute the following commands to install the UCX system from within the
44directory at the top of the tree:
45
46```sh
47$ ./autogen.sh
48$ ./contrib/configure-release --prefix=/where/to/install
49$ make -j8
50$ make install
51```
52
53NOTE: Compiling support for various networks or other specific hardware may
54require additional command line flags when running configure.
55
56### Developer Builds
57
58```bash
59$ ./autogen.sh
60$ ./contrib/configure-devel --prefix=$PWD/install-debug
61```
62
63*** NOTE: Developer builds of UCX typically include a large performance
64penalty at run-time because of extra debugging code.
65
66### Running internal unit tests
67
68```sh
69$ make -C test/gtest test
70```
71
72### Build RPM package
73```bash
74$ contrib/buildrpm.sh -s -b
75```
76
77### Build DEB package
78```bash
79$ dpkg-buildpackage -us -uc
80```
81
82### Build Doxygen documentation
83```bash
84$ make docs
85```
86
87### OpenMPI and OpenSHMEM installation with UCX
88[Wiki page](http://github.com/openucx/ucx/wiki/OpenMPI-and-OpenSHMEM-installation-with-UCX)
89
90### MPICH installation with UCX
91[Wiki page](http://github.com/openucx/ucx/wiki/MPICH-installation-with-UCX)
92
93### UCX Performance Test
94
95Start server:
96
97```sh
98$ ./src/tools/perf/ucx_perftest -c 0
99```
100
101Connect client:
102
103```sh
104$ ./src/tools/perf/ucx_perftest <server-hostname> -t tag_lat -c 1
105```
106Note: the `-c` flag sets CPU affinity. If running both commands on same host, make sure you set the affinity to different CPU cores.
107
108## Our Community
109
110* [Project Website](http://www.openucx.org/)
111* [ReadTheDocs](https://openucx.readthedocs.io/en/master/)
112* [Github](http://www.github.com/openucx/ucx/)
113* [Software Releases](http://www.github.com/openucx/ucx/releases)
114* [Mailing List](https://elist.ornl.gov/mailman/listinfo/ucx-group)
115* [Twitter](https://twitter.com/openucx)
116
117## Licenses
118
119UCX is licensed as:
120
121* [BSD3](LICENSE)
122
123## Contributor Agreement and Guidelines
124
125In order to contribute to UCX, please sign up with an appropriate
126[Contributor Agreement](http://www.openucx.org/license/).
127
128Follow these
129[instructions](https://github.com/openucx/ucx/wiki/Guidance-for-contributors)
130when submitting contributions and changes.
131
132## UCX Publications
133
134To reference UCX in a publication, please use the following entry:
135
136```bibtex
137@inproceedings{shamis2015ucx,
138 title={UCX: an open source framework for HPC network APIs and beyond},
139 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},
140 booktitle={2015 IEEE 23rd Annual Symposium on High-Performance Interconnects},
141 pages={40--43},
142 year={2015},
143 organization={IEEE}
144}
145```
146
147To reference the UCX website:
148
149```bibtex
150@misc{openucx-website,
151 title = {{The Unified Communication X Library}},
152 key = {{{The Unified Communication X Library}},
153 howpublished = {{\url{http://www.openucx.org}}}
154}
155```
156
157## UCX Architecture
158
159![](docs/doxygen/Architecture.png)
160
161| Component | Role | Description |
162| :---: | :---: | --- |
163| UCP | Protocol | Implements high-level abstractions such as tag-matching, streams, connection negotiation and establishment, multi-rail, and handling different memory types |
164| UCT | Transport | Implements low-level communication primitives such as active messages, remote memory access, and atomic operations |
165| UCS | Services | A collection of data structures, algorithms, and system utilities for common use |
166| UCM | Memory | Intercepts memory allocation and release events, used by the memory registration cache |
167
168## Supported Transports
169
170* [Infiniband](https://www.infinibandta.org/)
171* [Omni-Path](https://www.intel.com/content/www/us/en/high-performance-computing-fabrics/omni-path-driving-exascale-computing.html)
172* [RoCE](http://www.roceinitiative.org/)
173* [Cray Gemini and Aries](https://www.cray.com/)
174* [CUDA](https://developer.nvidia.com/cuda-zone)
175* [ROCm](https://rocm.github.io/)
176* Shared Memory
177 * posix, sysv, [cma](https://dl.acm.org/citation.cfm?id=2616532), [knem](http://knem.gforge.inria.fr/), and [xpmem](https://github.com/hjelmn/xpmem)
178* TCP/IP
179
180## Supported CPU Architectures
181
182* [x86_64](https://en.wikipedia.org/wiki/X86-64)
183* [Power8/9](https://www.ibm.com/support/knowledgecenter/en/POWER9/p9hdx/POWER9welcome.htm)
184* [Arm v8](https://www.arm.com/products/silicon-ip-cpu)
185