Skip to content

Puhti and Mahti computing services have been decommissioned. Puhti and Mahti login nodes and storage services will remain available until 15 October 2026, but are no longer covered by service contracts. Please clean up and migrate your data to Roihu ASAP. See Roihu data migration guide for instructions.

DDT

Arm DDT is a parallel debugger with a graphical user interface (GUI).

Available

  • Puhti: 22.0.4, 22.1.3, 23.0.4
  • Mahti: 22.1.0, 23.0.3

License

Usage is possible for both academic and commercial purposes.

Usage

Set up the debugger environment

module load ddt

Compile the application to be debugged, for example a Fortran, C or C++ program, with the compiler option -g to enable generation of debug information.

Here are a few examples of MPI debug sessions. The first salloc command requests 40 processes in a single node and the second 40 processes divided into two nodes:

export SLURM_OVERLAP=1

salloc --nodes=1 --ntasks-per-node=40 --time=00:30:00 --partition=small --account=<project_id> ddt srun ./debug_enabled_code
salloc --nodes=2 --ntasks-per-node=20 --time=00:30:00 --partition=large --account=<project_id> ddt srun ./debug_enabled_code

By default, DDT sets the initial breakpoint at MPI_Init. For debugging scalar or plain OpenMP programs, set the following environment variables before starting the debugger:

export ALLINEA_MPI_INIT=main
export ALLINEA_HOLD_MPI_INIT=1

More information

  • On CSC supercomputers:
    • Puhti: /appl/opt/ddt/23.0.4/doc/userguide-forge.pdf
    • Mahti: /appl/opt/ddt/23.0.3/doc/userguide-forge.pdf
  • On-line documentation