From Documentation
Jump to: navigation, search
Note: Some of the information on this page is for our legacy systems only. The page is scheduled for an update to make it applicable to Graham.
IPM
Description: Profiling library for parallel codes
SHARCNET Package information: see IPM software page in web portal
Full list of SHARCNET supported software


Introduction

IPM (Integrated Performance Monitoring) is a portable profiling infrastructure for parallel codes. It provides a low-overhead profile of application performance and resource utilization in a parallel program.

Version Selection

module load ipm/intel/0.983

Job Submission

Not applicable ...

Example Job

To start a parallel MPI run without IPM performance counters, you would normally do:

mpicc -O3 source.c -o executable
sqsub -q mpi -r runtimeEstimate -n numberOfCores -o outputFile ./executable

To insert IPM performance counters, you need to recompile your code and submit it as usual:

mpicc -O3 source.c -o executable $CPPFLAGS $LDFLAGS -lipm
sqsub -q mpi -r runtimeEstimate -n numberOfCores -o outputFile ./executable

With a fortran code, similarly you need to add "$CPPFLAGS $LDFLAGS -lipm" to the compile line, e.g.

mpif90 -O3 parallelTest.f90 -o test $CPPFLAGS $LDFLAGS -lipm

А summary of the performance information will be added to your output file. IPM also writes an XML file that can be used to generate a graphical webpage. This XML file is located in your run directory and usually has a name starting with your username followed by the jobID/etc., e.g. razoumov.1316726628.562583.0. To generate a webpage, simply pass the XML file to ipm_parse:

ipm_parse -html razoumov.1316726628.562583.0

A webpage directory will be created inside your current directory. Then copy the webpage directory to your desktop and open it with a browser, e.g. you can do from a Mac desktop:

scp -r username@cluster.sharcnet.ca:workDirectoryPath/webpageDirectory .
open webpageDirectory/index.html

General Notes

References

o IPM Home (about,docs,demo,download)
http://ipm-hpc.org/

o IPM Code on GitHub
https://github.com/nerscadmin/IPM