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).
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++.
The interface is part of ALL which can be found at
https://gitlab.version.fz-juelich.de/SLMS/loadbalancing in the
subdirectory. It is called
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.
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).