openucx / ucc

Unified Collective Communication Library
https://openucx.github.io/ucc/
BSD 3-Clause "New" or "Revised" License
177 stars 85 forks source link
collectives cuda deep-learning hpc infiniband mpi openshmem pgas pytorch roce sharp

Unified Collective Communication (UCC)

UCC is a collective communication operations API and library that is flexible, complete, and feature-rich for current and emerging programming models and runtimes.

Design Goals

UCC Component Architecture

Contributing

Thanks for your interest in contributing to UCC, please see our technical and legal guidelines in the contributing file.

All contributors have to comply with "Membership Voluntary Consensus Standard" and "Export Compliant Contribution Submissions" policies.

License

UCC is BSD-style licensed, as found in the LICENSE file.

Required packages

Compiling and Installing

Developer's Build

$ ./autogen.sh
$ ./configure --prefix=<ucc-install-path> --with-ucx=<ucx-install-path>
$ make

Build Documentation

$ ./autogen.sh
$ ./configure --prefix=<ucc-install-path> --with-docs-only
$ make docs

Open MPI and UCC collectives

Compile UCX 

$ git clone https://github.com/openucx/ucx
$ cd ucx
$ ./autogen.sh; ./configure --prefix=<ucx-install-path>; make -j install

Compile UCC

$ git clone https://github.com/openucx/ucc
$ cd ucc
$ ./autogen.sh; ./configure --prefix=<ucc-install-path> --with-ucx=<ucx-install-path>; make -j install

Compile Open MPI 

$ git clone https://github.com/open-mpi/ompi
$ cd ompi
$ ./autogen.pl; ./configure --prefix=<ompi-install-path> --with-ucx=<ucx-install-path> --with-ucc=<ucc-install-path>; make -j install

Run MPI programs

$ mpirun -np 2 --mca coll_ucc_enable 1 --mca coll_ucc_priority 100 ./my_mpi_app

Run OpenSHMEM programs

$ mpirun -np 2 --mca scoll_ucc_enable 1 --mca scoll_ucc_priority 100 ./my_openshmem_app

SUPPORTED Transports