Contents of the Package

Structure after installation

dlb/
├── bin
├── include
├── lib
└── share
    ├── doc
    │   └── dlb
    │       ├── examples
    │       │   ├── DROM
    │       │   ├── MPI+OMP
    │       │   ├── MPI+OMP_OMPT
    │       │   ├── MPI+OmpSs
    │       │   ├── OMPT
    │       │   ├── TALP
    │       │   ├── lewi_custom_rt
    │       │   ├── monitoring_regions
    │       │   └── statistics
    │       └── scripts
    ├── man
    │   ├── man1
    │   └── man3
    └── paraver_cfgs
        └── DLB

Binaries

dlb

Basic info, help and version

dlb_run

Run process with DLB pre-initialization, needed to run OMPT applications

dlb_shm

Utility to clean and list an existing shared memory

dlb_taskset

Utility to change the process mask of DLB processes with DROM enabled

Libraries

DLB installs different versions of the library for different situations, but in general you should only focus on these ones:

libdlb.so

Link against this library only if your application needs to call some DLB API function.

libdlb_mpi.so

Link in the correct order or just preload it using LD_PRELOAD environment variable if you want DLB to intercept MPI calls.

libdlb_mpif.so

Same case as above, but to intercept MPI Fortran calls.

Remember that if the programming model already supports DLB (as in Nanos++), you don’t need to link against any library.

Examples

DLB distributes some examples that are installed in the ${DLB_PREFIX}/share/doc/dlb/examples/ directory. Each example consists of a README file with a brief description and the steps to follow, a C source code file, a Makefile to compile the source code and a script run.sh to run the example.

Some Makefile variables have been filled at configure time. They should should not need any modification but you may check that everything is correct. Some Makefiles assume that Mercurium is configured in the PATH.

Note

In order to enable tracing you need an Extrae installation and to correctly set the EXTRAE_HOME environment variable.

DROM

This example allows you to execute a program with DROM support that prints messages when its process mask changes. You can run dlb_taskset while the program is running and see how it reacts to the different commands.

OMPT

This example is a small utility to check whether the application has been linked to an OpenMP runtime library that suports OMPT.

MPI + OpenMP / MPI + OpenMP (OMPT) / MPI + OmpSs

These are different examples with the same structure but different programming model. The examples use PILS, a synthetic MPI program that can be parameterized to produce load balance issues between processes. The script run.sh is prepared to be modified by the user in order to try different executions and compare them. These options include enabling DLB, enabling some specific DLB option, enabling tracing, etc.

LeWI with custom runtime system

This example shows the integration of a multithreaded runtime system with LeWI in asynchronous mode.

Monitoring Regions

This example shows the usage of the TALP Monitorin Regions, how can they be placed in a region of the code and obtain some metrics from it.

TALP

This example shows how a process can attach to DLB and obtain the CPU time on MPI and the CPU time on useful computation.

Statistics

Note

The statistics module has been deprecated and this example is not functional anymore. Please contact us if you are interested in using this module.

The last example consists of a PILS program designed to run for a long time, without DLB micro-load balancing, but with the Statistics module enabled. Check the run.sh script. The objective is to let the process run in background while you run one of the other two binaries provided. These two binaries get_pid_list and get_cpu_usage perform basic queries to the first PILS program and obtain some statistics about CPU usage.

Scripts

These scripts are provided for users to simplify the process of enabling some DLB module for their applications. These scripts should be copied to a write-access location, modify them if needed and execute them before the application. Typically, these scripts are correctly configured and should work out of the box, but it is recommended to double check the Run section at the bottom of the files and check whether the appropriate DLB library is configured. Refer to Using a DLB script provided in the installation for a usage example.

lewi_omp.sh

This script enables the LeWI module on OpenMP applications. It also enables OMPT support as long as the OpenMP runtime supports it.

lewi_omp_trace.sh

Same as the previous one, but with Extrae support.

lewi_ompss.sh

This script enables the LeWI module on OmpSs applications.

lewi_ompss_trace.sh

Same as the previous one, but with Extrae support.

talp.sh

This script enables the TALP module. A performance analysis summary will be reported at the end of the execution.