Multi-ApplicationOnlineProfiling  2.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Library Overview

In order to retrieve data from MPI execution, MALP runs the application and an analyser within the same MPI context (same mpirun command). When two programs run in the same MPI context, they share the same MPI_COMM_WORLD communicator, but as MALP must be able to profile MPI application without modifications, this is not acceptable : this shows the need to introduce MPI virtualization.

MALP can be described with 3 main parts :

  • The virtual MPI environment : it is used to replace the MPI_COMM_WORLD communicator by a communicator local to a given program (Virtual MPI)
  • The instrumentation environment : it is used to wrap the whole MPI interface and POSIX interface in order to collect data, such as time spent into the actual call etc. (Instrumentation)
  • The analysis environment : it is used to collect and process data from instrumentation in order to prepare profiling data and generate reports (Analyzer).

Virtual MPI environment

The virtual MPI environment consists in adding a layer between MPI applications and the MPI library in order to isolate the profiled program into its own environment. It is mainly set up by replacing the MPI_COMM_WORLD communicator by one which is "local" to each program. A new communicator is also introduced in order to allow communications between two seperate programs launched in the same MPI context : MPI_COMM_UNIVERSE (used to exchange data between instrumentation and analyzer).

This is basically done by wrapping the MPI functions and replacing the communicator on the fly.

See Virtual MPI for more information


Instrumentation is performed at run time by replacing wanted functions by wrapped ones which perform per call analysis (duration etc.) and send data to the analyser.

The wrapped function are :

  • The whole MPI interface
  • A great part of POSIX API (math functions, file io, memory allocation, etc.)


The Analyzer is the program which runs in the same MPI context as the profiled program. It waits for instrumentation events and process them. The Analyser consists of different parts :

See Launcher to get informations about how to launch.