h1. Sun Studio Performance Analyzer and MPI
h4. The Sun Studio Performance Analyzer
The [Sun Studio Performance Analyzer|http://developers.sun.com/sunstudio/overview/topics/analyzer_index.html] integrates many forms of performance analysis -- such as attributing time to user source code, identifying important callers and callees of functions, tracing memory allocations and detecting leaks, monitoring hardware counters, etc. -- with MPI performance analysis.
h4. MPI features
For full functionality and latest features, be sure to upgrade to the latest version. Sun Studio is available for [free download|http://developers.sun.com/sunstudio/downloads] on Linux and Solaris systems.
* timeline view of execution and MPI message lines
* message and byte counts
* attribution to user functions that called MPI
* easy-to-use interface to construct "arbitrary" statistical charts
* characterization of time spent in MPI as "wait" or "work" (only with Sun HPC ClusterTools MPI)
* ability to hide or expose details of the underlying MPI implementation
* filtering to examine subsets of MPI trace data
h4. Overview of usage
* Program compilation: No special compilation is needed. Additional functionality is available, however, if you compile with:
** symbolic information: Use {{-g}} to include symbolic information. This allows more useful analysis, such as the attribution of performance metrics to individual source lines.
** preserving the frame pointer: On x86 systems, if you see too many {{<static>}} or {{<Unknown>}} functions during analysis, instruct the compiler to use the frame pointer register for monitoring the stack:
*** {{-fno-omit-frame-pointer}} (GCC compilers)
*** {{-xregs=no%frameptr}} (Sun Studio compilers)
* Data collection: Instead of running
{panel} {{% *mpirun -np 4 ./a.out*}} {panel}
run
{panel} {{% *+collect+ +\-M CT8.2+ mpirun -np 4 +\-\-+ ./a.out*}} {panel}
where:
** {{collect}}: collects performance data for use with Analyzer
** {{-M}}: turns on MPI tracing; legal switch values include {{CT8.2}}, {{CT8.1}}, {{CT8}}, {{CT7}}, {{CT7.1}}, {{OPENMPI}}, {{MPICH2}}, {{MVAPICH2}}, and {{off}}
** {{--}}: separates the MPI launch command and its arguments from the name of the MPI executable and its arguments
* Analysis: Run the Analyzer on your newly created performance data -- e.g.,
{panel} {{% *analyzer test.1.er*}} {panel}
Make sure you have Java 2 Software Development Kit (JDK) 6, Update 3 or newer in your execution path.
h4. Links
{panel}
* Sun Studio [home page|http://developers.sun.com/sunstudio/index.jsp] and [download|http://developers.sun.com/sunstudio/downloads]
* [Sun Studio Performance Analyzer|http://developers.sun.com/sunstudio/overview/topics/analyzer_index.html]
* [screen cast|http://webcast-west.sun.com/interactive/09D02152/index.html]
* [technical article|http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/]
* [tutorial|http://developers.sun.com/sunstudio/documentation/tutorials/studio12.1_mpi/]
* [case study|http://wikis.sun.com/display/MPIAnalyzer/Memory+Profiling+with+MPI+Analyzer] of memory profiling
* {{man}} pages for [collect|http://developers.sun.com/sunstudio/documentation/ss12u1/mr/man/man1/collect.1.html], [analyzer|http://developers.sun.com/sunstudio/documentation/ss12u1/mr/man/man1/analyzer.1.html], and the [er_print|http://developers.sun.com/sunstudio/documentation/ss12u1/mr/man/man1/er_print.1.html] command-line tool
* details on [chart controls|http://wikis.sun.com/display/MPIAnalyzer/MPI+Chart+Controls+and+Attributes]
{panel}
h4. Screenshots
For more information on these sample screenshots, see the [technical article|http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/].
|Timeline\\displays|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/timeline_only_mod_zoomout.gif!|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/timeline2_funcsel.gif!|
|Statistical\\charts|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/base_ftns_hist.gif!|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/msgs_bytes.gif!|
|Source \\ code \\ analysis|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/functions_y_solve.gif!|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/source_y_solve.gif!|
h4. The Sun Studio Performance Analyzer
The [Sun Studio Performance Analyzer|http://developers.sun.com/sunstudio/overview/topics/analyzer_index.html] integrates many forms of performance analysis -- such as attributing time to user source code, identifying important callers and callees of functions, tracing memory allocations and detecting leaks, monitoring hardware counters, etc. -- with MPI performance analysis.
h4. MPI features
For full functionality and latest features, be sure to upgrade to the latest version. Sun Studio is available for [free download|http://developers.sun.com/sunstudio/downloads] on Linux and Solaris systems.
* timeline view of execution and MPI message lines
* message and byte counts
* attribution to user functions that called MPI
* easy-to-use interface to construct "arbitrary" statistical charts
* characterization of time spent in MPI as "wait" or "work" (only with Sun HPC ClusterTools MPI)
* ability to hide or expose details of the underlying MPI implementation
* filtering to examine subsets of MPI trace data
h4. Overview of usage
* Program compilation: No special compilation is needed. Additional functionality is available, however, if you compile with:
** symbolic information: Use {{-g}} to include symbolic information. This allows more useful analysis, such as the attribution of performance metrics to individual source lines.
** preserving the frame pointer: On x86 systems, if you see too many {{<static>}} or {{<Unknown>}} functions during analysis, instruct the compiler to use the frame pointer register for monitoring the stack:
*** {{-fno-omit-frame-pointer}} (GCC compilers)
*** {{-xregs=no%frameptr}} (Sun Studio compilers)
* Data collection: Instead of running
{panel} {{% *mpirun -np 4 ./a.out*}} {panel}
run
{panel} {{% *+collect+ +\-M CT8.2+ mpirun -np 4 +\-\-+ ./a.out*}} {panel}
where:
** {{collect}}: collects performance data for use with Analyzer
** {{-M}}: turns on MPI tracing; legal switch values include {{CT8.2}}, {{CT8.1}}, {{CT8}}, {{CT7}}, {{CT7.1}}, {{OPENMPI}}, {{MPICH2}}, {{MVAPICH2}}, and {{off}}
** {{--}}: separates the MPI launch command and its arguments from the name of the MPI executable and its arguments
* Analysis: Run the Analyzer on your newly created performance data -- e.g.,
{panel} {{% *analyzer test.1.er*}} {panel}
Make sure you have Java 2 Software Development Kit (JDK) 6, Update 3 or newer in your execution path.
h4. Links
{panel}
* Sun Studio [home page|http://developers.sun.com/sunstudio/index.jsp] and [download|http://developers.sun.com/sunstudio/downloads]
* [Sun Studio Performance Analyzer|http://developers.sun.com/sunstudio/overview/topics/analyzer_index.html]
* [screen cast|http://webcast-west.sun.com/interactive/09D02152/index.html]
* [technical article|http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/]
* [tutorial|http://developers.sun.com/sunstudio/documentation/tutorials/studio12.1_mpi/]
* [case study|http://wikis.sun.com/display/MPIAnalyzer/Memory+Profiling+with+MPI+Analyzer] of memory profiling
* {{man}} pages for [collect|http://developers.sun.com/sunstudio/documentation/ss12u1/mr/man/man1/collect.1.html], [analyzer|http://developers.sun.com/sunstudio/documentation/ss12u1/mr/man/man1/analyzer.1.html], and the [er_print|http://developers.sun.com/sunstudio/documentation/ss12u1/mr/man/man1/er_print.1.html] command-line tool
* details on [chart controls|http://wikis.sun.com/display/MPIAnalyzer/MPI+Chart+Controls+and+Attributes]
{panel}
h4. Screenshots
For more information on these sample screenshots, see the [technical article|http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/].
|Timeline\\displays|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/timeline_only_mod_zoomout.gif!|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/timeline2_funcsel.gif!|
|Statistical\\charts|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/base_ftns_hist.gif!|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/msgs_bytes.gif!|
|Source \\ code \\ analysis|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/functions_y_solve.gif!|!http://developers.sun.com/sunstudio/documentation/techart/mpi_apps/images/source_y_solve.gif!|