Commit f4bbb2d5 authored by Alan O'Cais's avatar Alan O'Cais

Update example to not require JUBE

parent d951ad81
......@@ -31,23 +31,30 @@ ALL Staggered Grid Method
.. contents:: :local:
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.
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.
Purpose of Module
_________________
This module provides an additional method to the `ALL library <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing>`_ , up-to-date descriptions of the methods in the library can
be found in the `ALL README file <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing/blob/master/README.md>`_.
This module provides an additional method to the `ALL library <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing>`_,
up-to-date descriptions of the methods in the library can be found in the
`ALL README file <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing/blob/master/README.md>`_.
In the *staggered-grid* scheme, a 3-step hierarchical approach is applied, where:
In the *staggered-grid* scheme, a 3-step hierarchical approach is applied,
where:
* work over the cartesian planes is reduced, before the borders of these planes are adjusted;
* in each of the cartesian planes the work is reduced for each cartesian column. These columns are then adjusted to each other to homogenize the work in each column;
* work over the cartesian planes is reduced, before the borders of these planes
are adjusted;
* in each of the cartesian planes the work is reduced for each cartesian column.
These columns are then adjusted to each other to homogenize the work in each
column;
* the work between neighboring domains in each column is adjusted.
Each adjustment is done locally with the neighboring planes, columns or domains by adjusting the adjacent boundaries.
Each adjustment is done locally with the neighboring planes, columns or domains
by adjusting the adjacent boundaries.
Background Information
______________________
......@@ -57,35 +64,78 @@ See :ref:`ALL_background` for details.
Building and Testing
____________________
ALL uses the `CMake <https://cmake.org/runningcmake/>`_ build system, specific build and installation requirements can
be found in the `ALL README file <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing/blob/master/README.md>`_.
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 <https://cmake.org/runningcmake/>`_ build system, specific build and
installation requirements can be found in the
`ALL README file <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing/blob/master/README.md>`_.
If you wish to use/test the topological mesh scheme, you will need an MPI-enabled
installtion of the `VTK <https://vtk.org/>`_ package.
There are 3 tests of available for the each method in the `ALL GitLab repository examples <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing/tree/master/example>`_ . Namely:
To build ALL, begin in the root directory of the package and use
.. code:: bash
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_INSTALLATION``. ``ALL_test`` (in the ``bin`` folder) is the binary that
performs the tests.
In the ``example/jube/input`` subdirectory there are 3 test data sets available,
namely:
1. Simple Wye-shape biosystem;
2. Heterogeneous polymer melt and
3. A rotated version of the Wye-shaped biosystem.
They can be run by executing the commands below:
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:
.. code:: bash
export ALL_INSTALLATION=/path/to/my/loadbalancing/install
cmake .. -DCMAKE_INSTALL_PREFIX=$ALL_INSTALLATION -DCM_ALL_FORTRAN=ON
make -j
make install
cd example/jube/
ln -s $ALL_INSTALLATION/bin/ALL_test
# JUBE must be available and configured in the environment
jube run ALL_benchmark.xml --tag Polymer --type 0
ASCII2MPIBIN <in_file (ASCII)> <out_file (binary)> <n_x> <n_y> <n_z>
where ``n_x``, ``n_y``, ``n_z`` are the number of (MPI) processes (in the X, Y
and Z directions) that will be used.
Within `ALL_benchmark.xml <https://gitlab.version.fz-juelich.de/SLMS/loadbalancing/blob/refactor/example/jube/ALL_benchmark.xml>`_ you can find different options depending on the method and test you would like to run. For example the tests can be chosen by the ``--tag`` and using:
``ALL_test`` takes a number of options,
1. ``Y``
2. ``Polymer``
3. ``rot_Y``
.. code:: bash
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, there are 5 options:
.. code:: bash
0 : Tensor
1 : Staggered
2 : Unstructured
3 : Voronoi
4 : Histogram
``gamma`` (double) is a relaxation which controls the convergence of the
load-balancing methods, ``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 ``ASCII2MPIBIN``.
An example execution using the polymer melt data set on 125 processors looks
like
.. code:: bash
In addition, the ``--type`` flag is used to choose the method ``0`` for the staggered grid method. Note that the second example is the most illustrative and hence recommended example to understand how the borders of the cartesian planes are adjusted.
ASCII2MPIBIN globalBlockCoordsPolymer.txt input.bin 5 5 5
mpirun -n 125 ALL_test 1 50 8.0 0 input.bin 80 80 450 5 5 5
Source Code
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment