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
If you are using openmpi/1.7.5 with Intel
icc compilers, set
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
mpirunin 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
-offlineoption), 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
*.mapprofile 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
-outputargument. 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:
Examples of MAP tool view for a complex parallel program are shown below. MAP with Input/Output view:
MAP with Parallel Stack View:
MAP with Project Files 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: