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:
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:
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