Compiler Flags
The Intel compilers have several flags which can help with detecting errors (e.g. out of bounds array access).
ifort
has a
-check all
option which enables run-time checking; this slows the code down significantly but can be very useful when debugging. Adding
-g -traceback
flags will tell you where the error is occurring. See the
ifort
man page for more details of the available flags. For checking MPI you can use the
-check_mpi
flag (version 4.0 and later), see the
CheckingMPI page for more details.
Segmentation Faults
If your code is generating a segmentation fault this
advice from Intel may be useful.
The GNU Debugger
This is called
gdb
and can be used to debug an executable called
myprog
using the command
gdb myprog
This will load your executable into gdb, now type
run
to start it running. For more information see the
gdb home page.
To start an MPI run under gdb use
mpirun -gdb -np 4 myprog
Intel Debugger
The intel debugger (idb) is available, with the graphical interface also available on zen-viz. Use
idb
to start the graphical interface or
idbc
to start the command line interface.
The versions of Intel Cluster Studio provided by the
ics2013
and
ics2013sp1
module can run idb using the mpiexec command e.g.
mpiexec -idb -np 4 myprog
Distributed Debugging Tool (DDT)
We have a license for
ddt
from
Allinea, to start it load the ddt module and type
ddt
. This is licensed to run on the log in node (the one called
zen
) but not on
zen-viz
. If you need to use ddt with a program running on zen-viz then see the "Attaching to a remote process" section below.
Submitting a job to the queue using DDT
You will need a modified job submission file to allow your job to run in the queue using DDT.
Copy the template PBS file (
/usr/local/examples/ddt/example-ddt.qtf
) into the directory where your job will run and edit as required (e.g. to change into the required working directory). You do not need to specify the executable in the mpirun line as this is set up from DDT.
Specify the location of the job submission file in DDT (
session -> options -> Job submission
)
You can now use DDT to submit your job to the queue.
When using fewer than 8 MPI processes per node you need to change the value of PROCS_PER_NODE_TAG to the number of MPI processes per node. This can be found from the run window by clicking the
Change
button (on the MPI implementation line) and selecting the
Job submission
tab.
When debugging an OpenMP application you will need to select threaded memory checking. From the
Advanced
section of the run window click the
Settings
button next to
Enable Memory Debugging
. From the
Language
menu select
C/Fortran, threads
.
Attaching to a remote process
If your program is already running, either on a compute node or on zen-viz, you can attach ddt to it as follows.
Firstly run
cp /usr/local/examples/ddt/remote-exec ~/.ddt
(which copies a small script into your ddt configuration directory.)
In the ddt window select
Session->Options->Other
. This will bring up a window called
Other settings
which contains a box called
Attach hosts file
. Enter
/usr/local/examples/ddt/nodes
in this box and click OK (if you are only using zen-viz then put
/usr/local/examples/ddt/zen-viz
in this box). Now select
Session->New Session->Attach
and enter the path to your executable in the
Application
box. You should see your executable appear in the window under the
Process name
column. Select the processes you want ddt to connect to and click
Attach to selected processes
.
--
JohnRowe - 28 Jan 2008