diff --git a/docs/source/_static/UCX_Layers.png b/docs/source/_static/UCX_Layers.png index c84fc6da967..6d8581a1444 100755 Binary files a/docs/source/_static/UCX_Layers.png and b/docs/source/_static/UCX_Layers.png differ diff --git a/docs/source/index.rst b/docs/source/index.rst index 184edc6f76d..9aafeab62fd 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -8,12 +8,24 @@ OpenUCX ******* -Unified Communication X (UCX) provides an optimized communication layer for -Message Passing (MPI), PGAS/OpenSHMEM libraries and RPC/data-centric -applications. +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 which 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 :ref:`here`. + +UCX is a member of `UCF consortium `_. -UCX utilizes high-speed networks for inter-node communication, and shared -memory mechanisms for efficient intra-node communication. .. image:: _static/UCX_Layers.png :alt: UCX layer diagram @@ -23,6 +35,7 @@ memory mechanisms for efficient intra-node communication. :maxdepth: 3 :hidden: + ucx_features download running faq @@ -31,7 +44,8 @@ memory mechanisms for efficient intra-node communication. Quick start *********** -The following commands will download and build UCX v1.6 :doc:`release `: +The following commands will download UCX latest v1.6.1 release, build the code, +and run a simple client/server example: .. code-block:: console @@ -41,34 +55,34 @@ The following commands will download and build UCX v1.6 :doc:`release $ ./contrib/configure-release --prefix=$PWD/install $ make -j8 install + $ gcc test/examples/ucp_client_server.c -lucp -lucs -o ucp_client_server \ + -Iinstall/include -Linstall/lib + $ export LD_LIBRARY_PATH=$PWD/instal/lib + $ ./ucp_client_server & + $ ./ucp_client_server -a # : IP address of a local RoCE or IPoIB interface + ... + ----- UCP TEST SUCCESS ------- + + UCX Client-Server Hello World + + ------------------------------ + Documentation ************* -* TODO API +* API doc: `HTML `_ `PDF `_ * `Examples `_ Projects using UCX ****************** +* `UCX-PY `_ +* `Dask `_ +* `SparkUCX `_ +* `NCCL `_ * `OpenMPI `_ * `MPICH `_ +* `Charm++ `_ * `OSSS shmem `_ -* `SparkUCX `_ - - -Developers section -****************** - -* `UCX on github `_ -* `Dev wiki `_ -* `Issue tracker `_ -* `UCX mailing list `_ - - -Buzz -**** - -* `UCX wins R&D 100 award `_ -* `UCX @ OpenSHMEM workshop `_ diff --git a/docs/source/ucx_features.rst b/docs/source/ucx_features.rst new file mode 100644 index 00000000000..99937d8e600 --- /dev/null +++ b/docs/source/ucx_features.rst @@ -0,0 +1,62 @@ +.. +.. Copyright (C) Mellanox Technologies Ltd. 2019. ALL RIGHTS RESERVED. +.. +.. See file LICENSE for terms. +.. + +.. _ucx_features: + +***************** +UCX main features +***************** + +High-level API features +*********************** +- Select either a client/server connection establishment (similar to TCP), or + connect directly by passing remote address blob. +- Support sharing resources between threads, or allocating dedicated resources + per thread. +- Event-driven or polling-driven progress. +- Java and Python bindings. +- Seamless handling of GPU memory. + +Main APIs +--------- +- Stream-oriented send/receive operations. +- Tag-matched send/receive. +- Remote memory access. +- Remote atomic operations. + +Fabrics support +*************** +- RoCE +- InfiniBand +- TCP sockets +- Shared memory (CMA, knem, xpmem, SysV, mmap) +- Cray Gemini + +Platforms support +***************** +- Supported architectures: x86_64, ARM, Power. +- Runs on virtual machines (using SRIOV) and containers (docker, singularity). +- Can utilize either MLNX_OFED or Inbox RDMA drivers. +- Tested on major Linux distributions (RedHat/Ubuntu/SLES). + +GPU support +*********** +- Cuda (for NVIDIA GPUs) +- ROCm (for AMD GPUs) + +Protocols, Optimizations and Advanced Features +********************************************** +- Automatic selection of best transports and devices. +- Zero-copy with registration cache. +- Scalable flow control algorithms. +- Optimized memory pools. +- Accelerated direct-verbs transport for Mellanox devices. +- Pipeline protocols for GPU memory +- QoS and traffic isolation for RDMA transports +- Platform specific optimizations (such as memcpy) +- Multi-rail support +- Bare-metal, containers and cloud environments support +- Advanced protocols for transfer messages of different sizes