AllineaMAPbanner

MAP – MPI profiling

Allinea Tools MAP is a low-overhead profiling application for programs that use Message-Passing Interface (MPI). It collects the detailed information on resource usage (time, speed/rate and memory) by your application and its components, MPI message-passing communications, and input/output (I/O) transfer. It helps to determine the performance bottlenecks, optimize your application and use of the resources.
The program you want to profile needs to be compiled with the debugging flag. For most compilers, it is -g. It is also better to turn off compiler optimization flags for debugging purposes. For example,

% mpif90 -g -o helloworld.exe helloworld.f90

To collect data from your application, MAP needs two small libraries to be linked with your program. Usually it could be done automatically, and your program will be dynamically-linked to the needed libraries. It will be directed by the environmental variable MAP_MPI_WRAPPER depending on the MPI implementation.

If you are using Intel MPI impi, set

MAP_MPI_WRAPPER=/share/opt/allinea/wrapper/libmap-sampler-MAP-IMPI.so

If you are using openmpi/1.7.5 with Intel ifort and icc compilers, set

MAP_MPI_WRAPPER=/share/opt/allinea/wrapper/libmap-sampler-MAP-openmpi_1.7.5.so 

 

While its common when debugging to submit runs from inside a debugger, for profiling the usual approach would be to run the program offline, producing a profile file that can be inspected later. With MAP profile you could do either way. You could launch it a GUI application and follow the program execution, or could use the command-line options and save the profiling data for the offline analysis using a GUI tool. For configuring and running GUI MAP tool follow these instructions on how to configure and run MAP.
Launching MAP could be done in one of the following ways:

  • In Pegasus2 environment by launching a GUI tool in the interactive queue:
    % module load allinea/4.2.1
    % bsub -q interactive -Is -XF map

    This requires logging to a graphical node (pegasus-gw.ccs.miami.edu) and have X11 forwarding enabled.

  • Using a remote Mac OS/X GUI client: Install and launch
  • Using a remote PC Windows GUI client: Install and launch
  • Using a remote Linux/Unix GUI client: Install and launchNote that launching a remote GUI client is a faster way than launching it via interactive queue on Pegasus2, because the graphical interface running on your local machine and does not require X11 forwarding.
  • Using in-line options in the runscript, for offline MAP analysis at a later time.
    % module load allinea/4.2.1

    Replace mpiexec or mpirun in your job runscript with ddt. Add command-line options for memory debugging, setting the tracepoints, or saving output as *.html for the offline debugging (add -offline option), as needed. Consult the Chapter 17.8. Starting MAP in A Job Script in User’s Guide (DDT + MAP) AllineaTools V.4.2.1 for exploring the options. For example, if your runscript  ddtjob.sh launches the job as follows:

    mpirun -n 1024 myprogram

    replace it with:

     map -profile -n 1024 myprogram

    Then submit it as a usual batch job:

    % bsub < ./ddtjob.sh

    MAP will run without a GUI, gathering data to a *.map profile file. Its filename is based on a combination
    of program name, processor count and timestamp, like program_1024p_2014-10-31_12-30.map, although this may be changed with the -output argument. To examine this file, either start GUI MAP application and select the Load Profile Data File option, or access it directly with command:

    % map program_1024p_2014-10-31_12-30.map

 

After you launched the GUI application, configure and run MAP!

Refer to the Chapters 17-23 on MAP options and configurations in a User’s Guide.

User’s Guide could also be found in the AllineaTools installation directory on Pegasus2 in the following location:

/share/opt/allinea/4.2.1/tools/doc/userguide.pdf

 

Examples of MAP tool view for a complex parallel program are shown below. MAP with Input/Output view:

MAP_IOexample

MAP with Parallel Stack View:

MAP_StackView_example

MAP with Project Files view:

MAP_ProjectFiles_view

 

NB: The history of your system configuration and the last programs you debugged or profiled with AllineaTools is saved in your home directory on pegasus2:

$HOME/.allinea/ 

 

HAPPY PROFILING!

 

Debugging and Profiling with AllineaTools

DDT – Distributed Debugging Tool

MAP – MPI Profiling

PerformanceReports – MPI profiling summary

MAP: configure and run

AllineaTools (DDT + MAP) User’s Guide. Version 4.2.1-37994

HPC Documentation

HPC Home