ARM (Allinea DDT / MAP)

Distributed Debugging Tool (DDT) from Allinea Software is a parallel debugger that can be run up to hundreds of processors. DDT can be used to debug serial, OpenMP, and MPI codes.


Basic Usage

To use DDT, the binary must be compiled with the debug output turned on, e.g.

gcc -g example.c -o myprogram

Begin the debugging process by using

module load arm
ddt

This will bring up the initial setup dialog box:

../../_images/Ddt1.png

Click on the ‘Run’ button and navigate to the executable to be run. The path to your program should now be in the ‘Application’ text box.

Next, if your program needs command line arguments, click on the ‘Arguments’ tab:

../../_images/Ddt2.png

Here you may enter any arguments your program needs just as they would appear on the command line or set any environmental variables you may need.

To run your program using multiple processes, click on the ‘MPI’ tab:

You can adjut the number of MPI tasks (read processes) you wish to run in parallel, this will be the same number which normally follows the ‘mpirun -np’ on the command line. Note: even if you want to run you MPI code serially you must at least set this value to 1.

If OpenMP is enabled, you can specify the number threads by clicking ‘OpenMP’ tab.

Memory debugging can be enabled by clicking its tab.

To run your program, simply click on ‘Run’, and if there are no errors, your program should run to completion. Normal output should be printed to the console you launched DDT from.


Launcing DDT From Within a Batch Job

For parallel jobs that run across multiple nodes, it is recommended to launch Allinea within the UGE batch system. The following is a batch script example:

#!/bin/bash
#$ -pe mpi-24 48
#$ -q long
#$ -v DISPLAY
#$ -w e
#$ -cwd

module load ompi     # load an MPI module
module load arm # load Allinea

ddt  -n $NSLOTS ./application # launch DDT and start debugging process

Running Map With a Batch Job

The following is a batch script example

#!/bin/bash
#$ -pe mpi-24 48
#$ -q long
#$ -cwd

module load ompi     # load an MPI module
module load arm # load Allinea

map --profile ./application # run map in non-interactive mode to create a map output file