mpiP is an easy to use library that when linked with an application reports information on MPI usage and performance. Information reported includes the MPI routines called, the number of time called, the amount of time spent in the routine, and statistics on message sizes.
The mpiP library libmpiP.a is installed in:
To use mpiP all that is required is to link your application with the mpiP library, libmipP.a, and with the supporting library -libiberty and run your application as usual. Use of the '-g' flag to include debugging information is recommended to allow identification of call sites.
mpixlc -g -o helloworld-mpi helloworld-mpi.c -L/soft/perftools/mpiP/lib -lmpiP -liberty
mpixlcxx -g -o helloworld-mpi helloworld-mpi.cpp -L/soft/perftools/mpiP/lib -lmpiP -liberty
mpixlf77 -g -o helloworld-mpi helloworld-mpi.f77 -L/soft/perftools/mpiP/lib -lmpiP -liberty
mpixlf90 -g -o helloworld-mpi helloworld-mpi.f90 -L/soft/perftools/mpiP/lib -lmpiP -liberty
Additional information may be found on the mpiP website - mpip.sourceforge.net
Known Issues on BG/Q
- fails to identify executable when using Fortran, causes call sites to be identified by instruction address not routine and line number (use addr2line with addresses as workaround)
- when executable not compiled with -g call site file and function names are bogus
- Nek5000 exiting after call to mpi_attr_get(MPI_COMM_WORLD,MPI_TAG_UB, ...)