Graybat
Graph Approach for Highly Generic Communication Schemes Based on Adaptive Topologies
##Description##
Graybat is a C++ library that presents a graph-based communication approach, which enables a mapping of algorithms to communication patterns and further a mapping of these communication patterns to varying hardware architectures. Therefore, a flexible and configurable communication approach for parallel and distributed applications. These mappings are established as an intermediate layer between an application and communication libraries and are dynamically adptable during run-time.
The graybat API is currently unstable.
##Documentation##
Have a look at the documentation that is available here or skim through the examples or test cases to have a quick start into graybat.
##Referencing##
Graybat is a scientific project. If you present and/or publish scientific results that used graybat, you should set this as a reference.
##Software License##
Graybat is licensed under the LGPLv3+. Please refer to our LICENSE.md
##Project Organization##
The project is organized in a couple of subdirectories.
- The example directory contains examples produced during development of graybat.
- The include directory contains the library itself, which is header only.
- The test directory contains unit and integration tests (might be used as examples)
- The utils directory contains cmake modules and doxygen files.
##Dependencies##
###Mandatory###
- cmake 3.0.2
- Boost 1.56.0
- g++ 5.2.0 or clang 3.5
- c++14
###Optional###
- OpenMPI 1.8.0 (mpi communication policy)
- zeromq 4.1.3 (zeromq communication policy)
- metis 5.1 (graph partitioning mapping)
- Boost Hana 1.0 (zeromq communication policy)
##Installation##
###System Installion###
Installation into the operating system libery path e.g.
to /usr/lib/graybat
:
git clone https://github.com/ComputationalRadiationPhysics/graybat.git
cd graybat && mkdir build && cd build
cmake -DCMAKE_INSTALL_DIR=/usr ..
sudo make install
###Package Install###
- Graybat AUR package
##Usage as Library##
###CMAKE-Configfile###
Graybat is a header only library so nothing has to be build. The most
easy way to include graybat into your application is to use the shiped
CMAKE-Configfile,
that can be used if your project is built with CMake. If graybat was
not installed to a path where CMake usually has a look then you can
instruct CMake to find graybat by adding the absolute path of graybat
to your CMAKE_PREFIX_PATH
, by setting the path within CMake find_package()
:
find_package(graybat 1.0.0 REQUIRED CONFIG PATHS <ABSOLUTE-PATH-TO-GRAYBAT>)
or by setting the graybat_DIR
:
set(graybat_DIR <ABSOLUTE-PATH-TO-GRAYBAT>)
The CMAKE-Configfile of graybat provides the CMAKE variables ${graybat_INCLUDE_DIRS}
and
${graybat_LIBRARIES}
. Where ${graybat_INCLUDE_DIRS}
contains all header files
included by graybat and ${graybat_LIBRARIES}
contains all libraries used by graybat.
The following is a an example of how to embed graybat into your CMakeLists.txt
find_package(graybat REQUIRED CONFIG)
include_directories(SYSTEM ${graybat_INCLUDE_DIRS})
set(LIBS ${LIBS} ${graybat_LIBRARIES})
Finally, the application can use graybat e.g. #include <graybat/Cage.hpp>
.
##Compiling Tests/Examples##
- Clone the repository:
git clone https://github.com/computationalradiationphysics/graybat.git
- Change directory:
cd graybat
- Create the build directory:
mkdir -p build
- Change to build directory:
cd build
- Set compiler:
export CXX=[g++,clang++]
- Create Makefile
cmake ..
- Build project :
make [target]
##Predefined Targets##
-
example: All example applications.
-
test : Build, unit and integration test.
-
doc: Build documentation in
doc/
. -
clean: Cleanup build directory.
##Tested Compilers##
- clang 3.5
- g++ 5.2.0
Current Compilation Status:
branch | state | description |
---|---|---|
master | stable releases | |
dev | development branch |
##Related Material##
##Authors##
- Erik Zenker (erikzenker@posteo.de)