EvntConsistColl library is an extention to GASPI that provides some implementations of collectives, including eventually consistent ones, in addition to the GASPI native collectives like barrier and allreduce.
The main feature of the eventually consistent collectives is that they operate on a fraction of data (e.g. 60%) which makes them appealing for machine/ deep learning applications.
We provide implementations of broadcast, reduce, and allreduce.
cmakeversion > 3.6 (presently build usingcmake v3.9.3)c++ 14(presently withgcc-8.2.0)
-
clone the git-repository into
<EvntConsistColl_root> -
edit appropriatelly
<EvntConsistColl_root>/CMakeFiles.txtto set the following variables- if GPI-2 is not to be loaded as a module, redefine
PKG_CONFIG_PATHby adding the path to the fileGPI2.pc(the package-config file for GPI-2) - eventually, comment the line with
CMAKE_SHARED_LINKER_FLAGS ...(it has been added due to the relative old g++ system-libraries)
- if GPI-2 is not to be loaded as a module, redefine
-
in
<EvntConsistColl_root>create a subdirectorybuildto compile EvntConsistCollcd <EvntConsistColl_root> mkdir build cd build cmake .. -DCMAKE_INSTALL_DIR=<target_installation_dir> make install
After building and installing EvntConsistColl,
- the library
libEvntConsistColl.ais installed in<target_installation_dir>/lib - the header
EvntConsistColl.hxxis in<target_installation_dir>/include - the executable examples are in
<EvntConsistColl_root>/build/examples
There are few examples
bcastprovides two versions of broadcast with plain gaspi_write and binomial tree, whilebcast_benchis primarily focused on benchmarking the later. Both support regular as well as eventually consistent collectives. To runbcastandbcast_bench(use binomial tree by default) insidebuild:
gaspi_run -m machine ./examples/bcast
gaspi_run -m machine ./examples/bcast_bench <number of elements> <iterations> [check, optional]
reduceandreduce_benchprovide implementations based on binomial tree that supports both regular and eventually consistent collectives. To runreduceandreduce_benchinsidebuild:
gaspi_run -m machine ./examples/reduce <number of elements> <threshold in [0,1]>
gaspi_run -m machine ./examples/reduce_bench <number of elements> <iterations> [check, optional]
allreduce_benchbenchmarks the segmented pipelined ring implementation of allreduce. To runallreduce_benchinsidebuild:
gaspi_run -m machine ./examples/allreduce_bench <number of elements> <iterations> [check, optional]