30yearlogo long


Integrated Performance Monitoring (IPM) is a performance profiling tool for parallel MPI applications. It does not require you to modify your source code, and runs with low overhead. IPM provides the following information about an application:

  • MPI communication time, statistics for each MPI call, communication topology, message size distributions, load balance
  • Computation percentage
  • PAPI event counts
  • Node memory usage
  • Wallclock, user, and system timings

IPM is installed on blacklight.


Compile your code

While logged in to blacklight, compile your code by following these steps.

  1. Load the IPM module
    % module load ipm  
  2. Link your code to the IPM library and compile
    % icc -o prog prog.c $IPM_LIB -lmpi
    Or, if you are using a makefile, add $IPM_LIB to the link line.

Run your code

To run your program, create a batch job to:

  1. Set up the module command.
  2. Load the IPM module
    module load ipm 
  3. Optionally, pick the level of reporting that you want
    setenv IPM_REPORT full
  4. Run the program
    mpirun -np  4  prog

View the IPM report

After your program runs, an summary IPM report is written to stdout. An XML file is also created, which can be used to create a webpage displaying graphics of the code performance.

The XML file will be named username.xxxxxxxxxx.xxxxxx.0 where each x is a digit.

To create the web page report do the following:

  1. While logged in to blacklight, type these commands:
    1. % module load ipm
    2. % ipm_parse -html  XML-file-name 
      This generates a directory with a long name which incorporates a log of information about the job: prog-name_#cpus_XML-file-name_ipm_job-id. This directory contains html files.
  2. Copy the directory to your local machine.
  3. View the index.html file from this directory in your favorite browser.