UCX is a communication library implementing a high-performance messaging
layer for MPI, PGAS, and RPC frameworks.

### Running internal unit tests
```sh
$ ./autogen.sh
$ ./contrib/configure-devel
$ make
$ make -C test/gtest test
```

### Running UCX hello-world
Compile:

```sh
$ ./autogen.sh  
$ ./contrib/configure-release --prefix=$PWD/install
$ make
```
Start server:

```sh
$ ./src/tools/perf/ucx_perftest -c 0
```

Connect client:

```sh
$ ./src/tools/perf/ucx_perftest <server-hostname> -t tag_lat -c 0
```

### UCX high-level layout
- UCX - Unified Communication X
- UCP - UCX Protocol. Implements high-level abstractions such as tag-matching,
  streams, connection negotiation and establishment, multi-rail, and handling 
  different memory types.
- UCT - UCX Transport. Implements low-level communication primitives such as
  active messages, remote memory access, and atomic operations.
- UCS - UCX Services. A collection of data structures, algorithms, and system
  utilities for common use.
- UCM - UCX Memory. Intercepts memory allocation and release events, used by
  memory registration cache.
