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