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.

Category:  Debugger

Availability: Open access for all academic users

Usage Notes

To show the software versions: 
module avail ddt

Loading the module will set the path and any necessary variables:
module load ddt/version

Additional Information

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

2. You must then run your application under control of the DDT interface. This can be done via an interactive fisbatch job. For example:
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
export DDT_MPIRUN=srun
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!