Skip to main content

Installation

This page covers building DMR from source.

On MareNostrum 5 you do not need this

A pre-built module already provides the library, headers, and all dependencies for DMR@jobs:

module load dmr

Use that for production runs and skip this page; see Building and Running Your Application. Follow the steps below only if you want to compile DMR from source (e.g., Slurm4DMR, develop new features...).

DMR needs two things: its dependencies (a specific build of Open MPI with external OpenPMIX and PRRTE) and DMR itself. Once both are in place, compiling and launching your application is covered in Building and Running Your Application.

1. Get the dependencies

Instead of building OpenPMIX, PRRTE, and Open MPI from scratch, load the pre-built MN5 modules:

module load cmake
module use /apps/GPP/DMR/dmr-modules
module load openpmix-for-dmr
module load prrte-for-dmr
module load openmpi-for-dmr
module load dlb-for-dmr # optional, only for the CE policy

These set OPENPMIX_PREFIX, PRRTE_PREFIX, OMPI_PREFIX, and DLB_PREFIX automatically.

note

If you cannot use the pre-built modules, follow the Other systems tab using MN5-specific paths, adding the MN5 UCX path to the Open MPI ./configure (--with-ucx=/apps/GPP/UCX/1.16.0/GCC).

2. Build DMR

With the dependencies in place, the build is the same on any system, you just need to chose which flavour you want: controlled (Slurm4DMR) or production (DMR@jobs) environment (see modes of operation).

git clone https://gitlab.bsc.es/accelcom/releases/dmr/dmr.git
cd dmr

The submodules provide the custom Slurm (mandatory for Slurm4DMR) and the examples (optional, only if you want them). Download them with:

git submodule update --init --recursive

Before configuring the compilation, you need to set two environment variables pointing to the sources and to a standard install location (edit paths to your liking):

SOURCES_DMR_PATH=$HOME/dmr
INSTALL_DMR_PATH=$HOME/.local

Compile DMR:

cd $SOURCES_DMR_PATH
cmake -B build -DCMAKE_INSTALL_PREFIX=$INSTALL_DMR_PATH
cmake --build build -j10
cmake --install build

Set additional options as needed (see Configuration for the full list of flags):

cmake -B build \
-DCMAKE_INSTALL_PREFIX=$INSTALL_DMR_PATH \
-DDMR_PROCS_PER_NODE=112 \
-DDMR_USE_TALP=1

Remember to keep exported the installation PATH while using DMR with (i.e., .bashrc):

export DMR_PATH=$INSTALL_DMR_PATH
More information

Adjust -j10 to the number of build jobs you want.

See Configuration for the full list of CMake options.

For help, contact us at accelcom@bsc.es.