DDT is a distributed debugging tool with an intuitive GUI and support for MPI, OpenMP, and CUDA. It is now part of the Allinea Forge product.
Availability: Open access for all academic users
To show the software versions:
module avail ddt
Loading the module will set the path and any necessary variables:
module load ddt/version
DDT is a licensed product. It is available to all CCR users but limited to 32 CPU tokens.
DDT/Forge manuals are available on the CCR front-end in pdf format and may be viewed using xpdf. The latest manual is located here as well as at the following path: /util/academic/allinea/forge-7.0/doc/userguide-forge.pdf
Running DDT on CCR
There are three steps to running DDT on the CCR cluster:
1. You must first re-compile your code with debugging enabled. Typically, you would use the "-g -O0" options when compiling and linking. DDT has been tested with intel-mpi so you should load that module when compiling. For example, here's the compilation commands for the conventional "cpi" example:
module load intel-mpi
mpicc -c -g -O0 cpi.c
mpicc -g -O0 -o cpi cpi.o
fisbatch --nodes=2 --ntasks-per-node=8 --partition=debug --qos=debug --time=01:00:00
3. Once the fisbatch job starts you will be automatically logged onto the head node of the job. From there you can launch DDT by typing:
module load ddt
module load intel-mpi
export export I_MPI_PMI_LIBRARY=/usr/lib64/libpmi.so
ddt ./your_executable &
4. The DDT interface will automatically detect the SLURM environment and should correctly populate your job details. However, it may be necessary to adjust the launcher settings within the DDT "Run" dialog so that the selected "MPI Implementation" is "SLURM (generic)". To switch the MPI implementation, click on the "Change..." button next to the "MPI Implementation" field and select "SLURM (generic)" from the resulting drop-down list. Be sure and check "Memory Debugging" if you suspect your bug is memory-related.
5. Click "Run" and DDT will launch your application and pause it at the first operation. From there you can use the DDT debugger interface to step through the code and find the bugs!