Debugging - Performance Analysis
You probably use on your laptop or workstation a set of classical debugger
framework (gdb
,
jdb
etc.)
or profilers (such as gprof
or
jmap
).
You can use these tools too on the UL HPC platform.
In addition, we have invested in a couple of commercial software you might find useful:
The below section describes the basic usage of those tools. For more details, you are expected to refer to their official documentation, linked below for convenience.
Note that for the iris cluster you are required to request license tokens for the Allinea tools through SLURM, as described here.
Allinea Forge - DDT & MAP
- Official web sites: DDT and MAP
- Reference documentation
-
Quickstart guide:
- on a computing node where the X11 agent have been forwarded:
module load Allinea/Forge
then run eitherddt
ormap
- on a computing node where the X11 agent have been forwarded:
Basic usage (in more details):
-
Connect by forwarding the X agent to the cluster (gaia in the below case)
$> ssh -X gaia-cluster
-
Reserve an interactive job (or connect to a running job using
oarsub -C <job ID>
– see OAR documentation). Notice theInitialize X11 forwarding
message which will ensure that you can really run the GUI.svarrette@access(gaia-cluster) ~> oarsub -I [ADMISSION RULE] Set default walltime to 7200. [ADMISSION RULE] Modify resource description with type constraints OAR_JOB_ID=2726996 Interactive mode : waiting... Starting... Initialize X11 forwarding... Connect to OAR job 2726996 via the node gaia-27 [...] svarrette@gaia-27(gaia-cluster) ~>
-
Load the
Allinea/Forge
modulevplugaru@moonshot2-13: ~ $ module show Allinea/Forge ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/apps/manual_install/Allinea/Forge/6.0.6: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- whatis(" Allinea Forge is the complete toolsuite for software development - with everything needed to debug, profile, optimize, edit and build C, C++ and Fortran applications on Linux for high performance - from single threads thro ugh to complex parallel HPC codes with MPI, OpenMP, threads or CUDA. - Homepage: http://www.allinea.com/products/develop-allinea-forge/ ") conflict("Forge") prepend_path("PATH","/opt/apps/default/software/Allinea/Forge/6.0.6/bin") prepend_path("LD_LIBRARY_PATH","/opt/apps/default/software/Allinea/Forge/6.0.6/lib") help([[ Allinea Forge is the complete toolsuite for software development - with everything needed to debug, profile, optimize, edit and build C, C++ and Fortran applications on Linux for high performance - from single threads throu gh to complex parallel HPC codes with MPI, OpenMP, threads or CUDA. - Homepage: http://www.allinea.com/products/develop-allinea-forge/ ]]) vplugaru@moonshot2-13: ~ $ module load Allinea/Forge
- you can now run Allinea DDT by issuing the command
ddt
- you can now run Allinea MAP by issuing the command
map
Allinea Performance Reports
- Official web sites: Allinea Performance Reports
- Reference documentation
- Examples:
-
Quickstart guide:
- on a computing node (thus in an OAR job):
module load Allinea/Reports
then prependperf-report
to the command line you normally use with your software
- on a computing node (thus in an OAR job):
Basic usage (in more details):
-
Connect as normally to the UL HPC platform, e.g. the (gaia cluster and start an interactive job:
$> ssh gaia-cluster $> oarsub -I vplugaru@moonshot2-13: ~ $ module show Allinea/Reports ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- /opt/apps/manual_install/Allinea/Reports/6.0.6: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- whatis(" Allinea Performance Reports are the most effective way to characterize and understand the performance of HPC application runs. One single-page HTML report elegantly answers a range of vital questions for any HPC site: Is t his application well-optimized for the system and the processors it is running on? Does it benefit from running at this scale? Are there I/O, networking or threading bottlenecks affecting performance? Which hardware, software or co nfiguration changes can we make to improve performance further. How much energy did this application use? - Homepage: http://www.allinea.com/products/allinea-performance-reports ") conflict("Reports") prepend_path("PATH","/opt/apps/default/software/Allinea/Reports/6.0.6/bin") prepend_path("LD_LIBRARY_PATH","/opt/apps/default/software/Allinea/Reports/6.0.6/lib") help([[ Allinea Performance Reports are the most effective way to characterize and understand the performance of HPC application runs. One single-page HTML report elegantly answers a range of vital questions for any HPC site: Is th is application well-optimized for the system and the processors it is running on? Does it benefit from running at this scale? Are there I/O, networking or threading bottlenecks affecting performance? Which hardware, software or con figuration changes can we make to improve performance further. How much energy did this application use? - Homepage: http://www.allinea.com/products/allinea-performance-reports ]]) vplugaru@moonshot2-13: ~ $ module load Allinea/Reports vplugaru@moonshot2-13: ~ $ perf-report myapplication
-
Upon completion of the executed task (
myapplication
) a performance report is generated in text and html format to the current directory- the name of the report will contain: the name of the executed task, number of processes it was run on (e.g. if we ran
perf-report mpirun -np 64 myapplication
, 64p would appear in the name) and a time stamp
- the name of the report will contain: the name of the executed task, number of processes it was run on (e.g. if we ran
RogueWave TotalView
- Official web site
- Reference documentation
-
Quickstart guide:
- on a computing node where the X11 agent have been forwarded:
module load TotalView
then runtotalview
- on a computing node where the X11 agent have been forwarded:
Basic usage (in more details):
-
Connect by forwarding the X agent to the cluster (gaia in the below case)
$> ssh -X gaia-cluster
-
Reserve an interactive job (or connect to a running job using
oarsub -C <job ID>
– see OAR documentation). Notice theInitialize X11 forwarding
message which will ensure that you can really run the GUI.svarrette@access(gaia-cluster) ~> oarsub -I [ADMISSION RULE] Set default walltime to 7200. [ADMISSION RULE] Modify resource description with type constraints OAR_JOB_ID=2726996 Interactive mode : waiting... Starting... Initialize X11 forwarding... Connect to OAR job 2726997 via the node gaia-27 [...] svarrette@gaia-27(gaia-cluster) ~>
-
Load the
debugger/TotalView
module:varrette@gaia-27(gaia-cluster) ~> module show debugger/TotalView ------------------------------------------------------------------------------------------------------------------ /opt/apps/resif/devel/v1.1-20150414/core/modules/debugger/debugger/TotalView/8.12.0-0-linux-x86-64: ------------------------------------------------------------------------------------------------------------------ whatis("Description: TotalView is a GUI-based source code defect analysis tool that gives you unprecedented control over processes and thread execution and visibility into program state and variables. It allows you to debug one or many processes and/or threads in a single window with complete control over program execution. This allows you to set breakpoints, stepping line by line through the code on a single thread, or with coordinated groups of processes or threads, and run or halt arbitrary sets of processes or threads. You can reproduce and troubleshoot difficult problems that can occur in concurrent programs that take advantage of threads, OpenMP, MPI, GPUs or coprocessors. - Homepage: http://www.roguewave.com/products/totalview.aspx ") conflict("debugger/TotalView") prepend_path("MANPATH","/opt/apps/resif/devel/v1.1-20150414/core/software/debugger/TotalView/8.12.0-0-linux-x86-64/toolworks/totalview.8.12.0-0/man") prepend_path("PATH","/opt/apps/resif/devel/v1.1-20150414/core/software/debugger/TotalView/8.12.0-0-linux-x86-64/toolworks/totalview.8.12.0-0/bin") setenv("EBROOTTOTALVIEW","/opt/apps/resif/devel/v1.1-20150414/core/software/debugger/TotalView/8.12.0-0-linux-x86-64") setenv("EBVERSIONTOTALVIEW","8.12.0-0") setenv("EBDEVELTOTALVIEW","/opt/apps/resif/devel/v1.1-20150414/core/software/debugger/TotalView/8.12.0-0-linux-x86-64/easybuild/debugger-TotalView-8.12.0-0-linux-x86-64-easybuild-devel") setenv("TVDSVRLAUNCHCMD","oarsh") prepend_path("LM_LICENSE_FILE","/opt/apps/resif/devel/v1.1-20150414/core/software/debugger/TotalView/8.12.0-0-linux-x86-64/opt/apps/licenses/roguewave/license.lic") help([[ TotalView is a GUI-based source code defect analysis tool that gives you unprecedented control over processes and thread execution and visibility into program state and variables. It allows you to debug one or many processes and/or threads in a single window with complete control over program execution. This allows you to set breakpoints, stepping line by line through the code on a single thread, or with coordinated groups of processes or threads, and run or halt arbitrary sets of processes or threads. You can reproduce and troubleshoot difficult problems that can occur in concurrent programs that take advantage of threads, OpenMP, MPI, GPUs or coprocessors. - Homepage: http://www.roguewave.com/products/totalview.aspx ]]) svarrette@gaia-27(gaia-cluster) ~> module load debugger/TotalView
-
you can now run RogueWave TotalView by issuing the command
totalview
Troubleshooting
- Have a look at FAQ or Report a problem