ARM Parallel Profiling and Debugging Tools on the Peregrine System
Peregrine has the profiling and debugging tool suite from ARM, including ARM Forge and ARM Performance Reports.
ARM Forge on Peregrine
ARM Forge includes the parallel profiler MAP and parallel debugger DDT. This tool can be used to profile and debug C, C++ and Fortran codes.
Although it is not necessary, we strongly recommend that you setup the remote client to use this tool to overcome latencies that arise when x-forwarding the display.
Download the remote client from ARM's website, download the client for your platform. (Mac/Windows/Linux)
- Open the ARM Forge app
- Select the configure option in the "Remote Launch" dropdown menu.
- Setup the configuration as given below, and hit "Test Remote Launch":
Replace USER with your peregrine username.
Before you being please make sure that your application is compiled with the debug flag (-g), to enable profiling and debugging.
# Module to load
$ module load arm/18.1.2
$ which map
$ which ddt
ARM MAP is a parallel profiler that can be used to profile serial and parallel applications. It is easy to use and can be used from the GUI or the command line or through a remote client.
# To profile an executable
$ map --profile <name of the executable>
# this will create a *.map file.
# The "--profile" option lets you collect profiling data from the
# command line.
# You can then view the data from the desktop client. To view it
# directly through x11 forwarding just type 'map',
# it will open a GUI.
# to profile an mpi executable
$ map --profile -np 4 <executable>
# to run map interactively
# NOTE: you should enable x-forwarding when connecting to
# This will open the GUI
# To start DDT interactively from an Interactive Compute Node
# To start ddt on Peregrine and connect to it via the remote client
# get an interactive compute node on Peregrine and start DDT
$ ddt --connect <executable>
# NOTE: start the remote client and connect to peregrine, you will
# get a prompt to accept the remote connection from the DDT instance
# Running on a compute node.
ARM Performance Reports
ARM Performance Reports is a very easy to use, low overhead tool for analysis of the performance of applications. It reports time spent in computation, I/O and MPI communications, amount of memory used and information about why your program is spending so much time in a particular type of processing. Output is provided in a simple one page text or HTML file.
Module to use
$ module load arm/18.1.2
$ which perf-report
All you need to do is prefix your execution command with 'perf-report'
$ perf-report <executable>
$ perf-report mpirun -n 4 <executable>
# This will generate a .html file and a .txt file that you can
# view in a browser or text editor.