Load balancing for multi-GPU DL_MESO

This module concerns the implementation of the ALL library for load balancing in the multi-GPU version of DL_MESO_DPD.

Purpose of Module

The intention is to allow for better performance when modelling complex systems, like large proteins or lipid bylars, redistributing the work load across the GPUs. The A Load Balancing (ALL) library, developed at Julich Supercomputer Center, provides several scheme to find the ideal split of the work load: from the simplest orthogonal non staggered domain decomposition, to the more fancy Voronoi mesh scheme.

Background Information

This module is part of the DL_MESO_DPD code. Full support and documentation is available at:

To download the DL_MESO_DPD code you need to register at https://gitlab.stfc.ac.uk. Please contact Dr. Micheal Seaton at Daresbury Laboratory (STFC) for further details.

The ALL library has been introduced during the ECAM Extended Software Development Workshop for Meso and Multi Scale Modelling hosted in Julich in June 2019.

Building and Testing

The DL_MESO code is developed using git version control. Currently, the multi GPU version is under a branch named multi_GPU_version. After downloading the code, checkout the GPU branch and look into the DPD/gpu_version folder, i.e:

git clone https://gitlab.stfc.ac.uk/dl_meso.git
cd dl_meso
git checkout multi_GPU_version
cd ./DPD/gpu_version/bin
make all

To compile and run the code you need to have installed the CUDA-toolkit (>=8.0) and have a CUDA enabled GPU device (see http://docs.nvidia.com/cuda/#axzz4ZPtFifjw). For the MPI library, OpenMPI 3.1.0 has been used in testing.

To run the case, copy the FIELD and CONTROL files from the “../tests” directory and run using mpirun -np NP ./dpd_gpu.exe. Compare the OUTPUT and the export files to verify your results.

Source Code

This module has been merged into DL_MESO code. It is composed of the following commits (you need to be registered as collaborator):

The ALL library is available (after registration) at: