ALL C++ interface

Since C++ becomes more common in the HPC environment, therefore the default interface for ALL is written in that language. The library uses class inheritance to administrate the different load-balancing methods. Every necessary functionality to use the library is provided by the interface. In addition there is a Fortran interface provided (description in module ALL Fortran interface).

Purpose of Module

This module is necessary for all users to couple their code with the ALL library.

It is currently used in all projects, which already include the ALL library to their code and are based on C and C++.

Background Information

The interface is part of ALL which can be found at https://gitlab.version.fz-juelich.de/SLMS/loadbalancing in the include subdirectory. It is called ALL.hpp

Technical Details

The C++ interface is a header-based solution, as it uses C++ templating capabilities to support different types of floating point numbers to describe domain borders and work loads. Internally class inheritance is used to administrate the different included load-balnacing methods. This should provide an easy way to include future additions of new methods into the library.

Building

General installation instructions for ALL can be found in the README.md of the ALL repository (which is also distributed with each release).

As the C++ interface is the default interface of the ALL library, there is no need to explicitly enable it. The interface provides functions to create an object which handles the computations of new boundaries based on provided sets of domain borders and work loads. In addition, if the library is compiled with VTK support (requires CM_ALL_VTK_OUTPUT in CMake), functionality to create VTK descriptions of the domain structure is provided (for all methods working on orthogonal domains).

Source Code

The source code for this interface consists of: include/ALL.hpp