Bureaucrats, cc_docs_admin, cc_staff
2,879
edits
(simplify language, prep for translation) |
|||
Line 1: | Line 1: | ||
= Introduction = | = Introduction = | ||
[https://www.arm.com/products/development-tools/hpc-tools/cross-platform/forge/ddt | [https://www.arm.com/products/development-tools/hpc-tools/cross-platform/forge/ddt ARM DDT] formerly know as Allinea DDT, is a powerful commercial parallel debugger with a graphical user interface. It can be used to debug serial, MPI, multi-threaded, and CUDA programs, or any combination of these, written in C, C++, and FORTRAN. [https://www.arm.com/products/development-tools/hpc-tools/cross-platform/forge/map MAP] is another very useful tool from ARM (formerly Allinea) - an efficient parallel profiler. | ||
This software is available on Graham as two separate modules | This software is available on Graham as two separate modules: | ||
* allinea-cpu, for CPU debugging and profiling; | |||
* allinea-gpu, for GPU or mixed CPU/GPU debugging. | |||
As this is a GUI application, you should log in using <code>ssh -Y</code>, or use an SSH client like MobaXterm or XQuartz to ensure proper X11 tunnelling. See [[SSH]] for further guidance. | |||
Both DDT and MAP are normally used interactively through their GUI, which | Both DDT and MAP are normally used interactively through their GUI, which is normally accomplished using the <code>salloc</code> command (see below for details). MAP can also be used non-interactively, in which case it can be submitted to the scheduler with the <code>sbatch</code> command. | ||
The current license limits the use of DDT/MAP to a maximum of 512 CPU cores across all users at any given time. DDT-GPU is likewise limited to 8 GPUs. | |||
= Usage = | = Usage = | ||
== CPU-only | == CPU-only code, no GPUs == | ||
Allocate the node or nodes on which to do the debugging or profiling with <code>salloc</code>, e.g.: | |||
salloc --x11 --time=0-1:00 --mem-per-cpu=4G --ntasks=4 | salloc --x11 --time=0-1:00 --mem-per-cpu=4G --ntasks=4 | ||
This will open a shell session on the allocated node. Then load the appropriate module: | |||
module load allinea-cpu | module load allinea-cpu | ||
This may fail with a suggestion to load an older version of OpenMPI first. If that happens, reload the OpenMPI module with the suggested command, and then reload the allinea-cpu module: | |||
module load openmpi/2.0.2 | module load openmpi/2.0.2 | ||
Line 33: | Line 35: | ||
Make sure the MPI implementation is the default "OpenMPI" in the Allinea application window, before pressing the Run button. If this is not the case, press the Change button next to the "Implementation:" string, and pick the correct option from the drop down menu. | Make sure the MPI implementation is the default "OpenMPI" in the Allinea application window, before pressing the Run button. If this is not the case, press the Change button next to the "Implementation:" string, and pick the correct option from the drop down menu. | ||
When done, exit the shell | When done, exit the shell. This will terminate the allocation. | ||
== CUDA code == | == CUDA code == | ||
Allocate the node or nodes on which to do the debugging or profiling with <code>salloc</code>, e.g.: | |||
salloc --x11 --time=0-1:00 --mem-per-cpu=4G --ntasks=1 --gres=gpu:1 | salloc --x11 --time=0-1:00 --mem-per-cpu=4G --ntasks=1 --gres=gpu:1 | ||
This will open a shell session on the allocated node. Then load the appropriate module: | |||
module load allinea-gpu | module load allinea-gpu | ||
This may fail with a suggestion to load an older version of OpenMPI first. If that happens, reload the OpenMPI module with the suggested command, and then reload the allinea-gpu module: | |||
module load openmpi/2.0.2 | module load openmpi/2.0.2 | ||
module load allinea-gpu | module load allinea-gpu | ||
Ensure a cuda module is loaded: | |||
module load cuda | module load cuda | ||
Line 58: | Line 60: | ||
ddt path/to/code | ddt path/to/code | ||
When done, exit the shell | When done, exit the shell. This will terminate the allocation. | ||
= Known issues = | = Known issues = |