Skip to content

Collective communications library with various primitives for multi-machine training.

License

Notifications You must be signed in to change notification settings

kumpera/gloo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gloo

Gloo is a collective communications library. It comes with a number of collective algorithms useful for machine learning applications. These include a barrier, broadcast, and allreduce.

Transport of data between participating machines is abstracted so that IP can be used at all times, or InifiniBand (or RoCE) when available.

Where applicable, algorithms have an implementation that works with system memory buffers, and one that works with NVIDIA GPU memory buffers. In the latter case, if the InfiniBand transport is used, GPUDirect can be used to accelerate cross machine GPU-to-GPU memory transfers.

Requirements

Gloo is built to run on Linux and has no hard dependencies other than libc.

Optional dependencies are:

  • cuda -- for CUDA algorithms, tests, and benchmark
  • googletest -- to build and run tests
  • eigen -- for fast floating point routines
  • hiredis -- for coordinating machine rendezvous through Redis

Usage

You can build Gloo using CMake.

Since it is a library, it is most convenient to vendor it in your own project and include the project root in your own CMake configuration.

For standalone builds (e.g. to run tests or benchmarks), first populate the third-party directory with a few dependencies to compile both the tests and the benchmark tool:

cd third-party
./fetch.sh

Then, to build:

mkdir build
cd build
cmake ../ -DBUILD_TEST=1 -DBUILD_BENCHMARK=1
ls -l gloo/gloo_{test,benchmark}

Documentation

Please refer to docs/ for detailed documentation.

License

Gloo is BSD-licensed. We also provide an additional patent grant.

About

Collective communications library with various primitives for multi-machine training.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 69.6%
  • Python 23.8%
  • CMake 4.0%
  • Cuda 2.5%
  • C 0.1%