ALL Tensor-Product method¶
A Load-Balancing Library (ALL) library aims to provide an easy and portable way to include dynamic domain-based load balancing into particle based simulation codes. The library is developed in the Simulation Laboratory Molecular Systems of the Juelich Supercomputing Centre at Forschungszentrum Juelich.
For the Tensor-Product method, the work on all processes (subdomains) is reduced over the cartesian planes in the systems. This work is then equalized by adjusting the borders of the cartesian planes.
ALL is a C++ header only library using template programming, strictly speaking there is no need to install the library, you simply include the header files in your application. In order to provide examples, ALL uses the CMake build system, specific build and installation requirements can be found in the ALL README file. If you wish to use/test the topological mesh scheme, you will need an MPI-enabled installation of the VTK package.
To build ALL, begin in the root directory of the package and use
export ALL_INSTALLATION=/path/to/my/loadbalancing/install mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=$ALL_INSTALLATION -DCM_ALL_VTK_OUTPUT=ON -DCM_ALL_VORONOI=ON make -j make install cd ..
This will create an installation of ALL in the path pointed to by
ALL_test (in the
bin folder) is the binary that
performs the tests. If you omit the option
-DCM_ALL_VTK_OUTPUT=ON you will
not require the VTK dependency (but cannot use the unstructured mesh method).
example/jube/input subdirectory there are 3 test data sets available,
- Simple Wye-shape biosystem;
- Heterogeneous polymer melt and
- A rotated version of the Wye-shaped biosystem.
These data sets are in raw ascii format and need to be translated into a format
that can be consumed by
ALL_test. A utility
ASCII2MPIBIN is provided to
do the conversion, with the command line options:
ASCII2MPIBIN <in_file (ASCII)> <out_file (binary)> <n_x> <n_y> <n_z>
n_z are the number of (MPI) processes (in the X, Y
and Z directions) that will be used.
ALL_test takes a number of options,
ALL_test <Method> <Number of iterations> <gamma> <weighted> <input file> <system size: x, y, z> <domain layout: x, y, z>
Method (integer) is the load-balancing scheme to use of which there are 5 options:
0 : Tensor 1 : Staggered 2 : Unstructured 3 : Voronoi 4 : Histogram
gamma (double) is a relaxation which controls the convergence of the
weighted (boolean) indicates whether points should
be assigned a weight. The system size and domain layout are provided in the
output of the call to
An example execution using the polymer melt data set on 125 processors looks like
ASCII2MPIBIN globalBlockCoordsPolymer.txt input.bin 5 5 5 mpirun -n 125 ALL_test 0 50 8.0 0 input.bin 80 80 450 5 5 5
The implementation of the Tensor-Product method in ALL can be found in ALL_Tensor.hpp.
The source code to the ALL library is available as a git repository at https://gitlab.version.fz-juelich.de/SLMS/loadbalancing . To obtain a copy of the repository you can use
git clone https://gitlab.version.fz-juelich.de/SLMS/loadbalancing.git
However, please note that the source code is currently under embargo until an associated paper is published, if you would like to be obtain a copy of the code, please contact Prof. Godehard Sutmann at