Allinea DDT is a powerful, easy-to-use graphical debugger capable of debugging:

  • Single process and multithreaded software
  • OpenMP
  • Parallel (MPI) software
  • Heterogeneous software such as that written to use GPUs
  • Hybrid codes mixing paradigms such as MPI + OpenMP, or MPI + CUDA
  • Multi-process software of any form, including client-server applications

Allinea DDT includes static analysis that highlights potential problems in the source code, integrated memory debugging that can catch reads and writes outside of array bounds, integration with MPI message queues and much more. It provides a complete solution for finding and fixing problems whether on a single thread or hundreds of thousands. Allinea DDT supports all of the compiled languages that are found in mainstream and high-performance computing including:

  • C, C++, and all derivatives of Fortran, including Fortran 90.
  • Parallel languages/models including MPI, UPC, and Fortran 2008 Co-arrays.
  • GPU languages such as HMPP, OpenMP Accelerators, CUDA and CUDA Fortran.

Allinea DDT can be used for debugging on platforms from desktops to Petascale class machines running hundreds of thousands of processes.

Platforms and Locations

Platform Location Notes
Linux

x86_64 TOSS 4
/usr/tce/packages/arm-forge/

/collab/usr/global/tools/ddt/toss_4_x86_64_ib
Versions other than the current default can be found under here also.

However, modules should be used to load the desired version if different than the default.
CORAL

ppc64le
/collab/usr/global/tools/ddt/blueos_3_ppc64le_ib_p9 Versions other than the current default can be found under here also.

However, modules should be used to load the desired version if different than the default.

Quick Start

Important: Only the bare essentials for getting started are provided here. DDT is a full-featured, sophisticated tool. Users will definitely want to review Allinea's documentation and/or tutorials.

Linux Systems

1. On TOSS 3 systems, the ddt command is in the default path (/usr/tce/bin/ddt). Multiple version are available and your version can be switched via the allineaforge modules:

% module avail arm-forge

-------------------------- /usr/tce/modulefiles/Core ---------------------------
   arm-forge/22.1.3

Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible modules matching
any of the "keys".

% module load arm-forge

% which ddt
/usr/tce/packages/arm-forge/arm-forge-22.1.3/bin/ddt

On TOSS 4 systems, the ddt command is not in the default path and ddt must be launched via the full path such as /usr/tce/packages/arm-forge/arm-forge-22.1.3/bin/ddt.

2. Build your application being sure to specify the -g compiler flag (if you have not already done so).

3. Launch ddt with your application - the method depends upon whether you are running a serial or parallel application. See below.

Serial Jobs

1. If you are on a login node, or one of the pdebug or pbatch nodes via using the mxterm utility, you can simply invoke DDT with the name of your executable:

2. You should then see DDT's splash screen, followed by two new DDT windows.

3. In the "Run" window, you should see the name of your executable. If you have arguments to add for you program, you can enter those. Otherwise, just click the "Run" button to launch your serial program.

4. After your program launches, you should get a third window loaded with your serial program. You can now interact with your program (set breakpoints, run, examine data, etc.).

MPI Jobs

1. For running on LC pbatch partition nodes, you can acquire your partition using LC's salloc utility. For example:

% salloc -N 4 -n 64 -ppdebug 

will request 4 nodes with 64 tasks/cores for 60 minutes.

2. When your new xterm window appears, launch DDT with your application:

% ddt myapp

3. The next step is important - you need to tell DDT to use SLURM as the MPI manager task, and then need to specify the srun arguments and desired number of processes. In the example below, generic (SLURM) is selected, 64 processes.

4. Click on the "Run" button - DDT will attempt to establish your parallel MPI job, as it connects to all processes

5. After DDT starts your parallel job, you will get a new window with your job loaded. You can then begin debugging as usual.

Troubleshooting

  • Consult the vendor documentation (below)
  • Contact the LC Hotline to report a problem.

Documentation and References