IPM is a portable profiling infrastructure for parallel MPI codes. It provides a low-overhead performance profile of the performance aspects and resource utilization in a parallel program. Communication, computation, and IO are the primary focus.
IPM can be loaded using the following module:
module load ipm
No source code modifications need to be made to profile your codes with IPM. You just need to link your MPI code to the IPM library as follows:
mpif90 -o foo foo.f90 /opt/crc/PROFILING/ipm/lib/libipm.a
Before running your executable, set the reporting mode to FULL as follows:
setenv IPM_REPORT full
Then run your MPI executable as normal e.g.
mpiexec -n 4 ./foo
Once your execution has terminated an IPM profile directory will be written to your work directory (with your netid as prefix), for the job. To see the final profile as an HTML report, the profile directory must be parsed as follows:
ipm_parse -html netid.xxxxxx
On completion of this command, a new directory is created which contains the HTML report. To view the profile, change into the directory and use firefox to open the index.html document.
See the official website: IPM Webpage