Debug Parallel MPI and OpenMP Cluster Applications
PGDBG® is a graphical serial, MPI-parallel and OpenMP thread-parallel debugger for Linux, Mac OS X and Windows workstatons, servers and clusters. PGDBG can debug programs on SMP servers, distributed-memory clusters and even hybrid clusters where each node contains multiple SMP 64-bit or 32-bit multicore processors. PGDGB is capabable of debugging MPI-parallel, OpenMP thread-parallel or hybrid combinations of parallel MPI processes and OpenMP threads.
PGDBG complements PGI's powerful MPI and OpenMP parallel graphcial performance analysis profiler, PGPROF®.
PGDBG is included with all PGI products. The PGDBG version included with PGI Workstation class, PGI Server class products and PGI Visual Fortran include support for debugging up to a maximum of eight local MPI processes. The PGDBG version included with the PGI CDK® Cluster Development Kit® is available in configurations capable of debugging a maximum of 16, 64 or 256 parallel MPI processes with up to 64 OpenMP threads/process.
Control Threads & Processes Separately
The PGDBG cluster debugger provides the ability to separately debug and control OpenMP threads, pthreads, and MPI processes running on a Linux or Microsoft Windows cluster. Use Step, Next, Break, Halt, Wait or Continue commands on threads or processes individually or collectively as a group.
View full size image
Debugging a cluster application can be extremely challenging. PGDBG provides a comprehensive set of graphical user interface (GUI) elements to assist. Using a single window, you have precise control over each node of your cluster or each thread of your multiple CPU SMP node. The Main window displays F77, F95, C or C++ program source code. It includes one-touch buttons for commands such as Run, Break, Quit, or Print. Additional controls on the Main window allow selecting and controling individual or collective threads and processes, and the commands to access them.
Tabs in the Main window Source Panel allow you to display source code only, disassembly code showing how the currently executing high-level source code has been compiled into assembly language, or a mix where the assembly code interleaved with the source code. Assembly language Stepping and breakpoint indicators are enabled as well.
The process/thread grid Panel includes tabs to displays state by color and a summary tab giving current status on each active thread or process.
Complementing to the Main window, are a number of special subwindows:
- Memory subwindow displays a region of memory
- Disassembly subwindow offers an alternative to the Disassemble tab in the Source Panel
- Messages subwindow displays the MPI state
- Register subwindow displays register values in a variety of formats including integer, hex, floating point, and more.
- Stack traceback subwindow displays the sequence of nested procedure calls.
- Custom display subwindow displays important variables values, memory regions or other arbitrary output from your executing program.
PGDBG handles F77, F95, C and C++ programs and it is DBX-compatible with an extended command language for setting of breakpoints and watchpoints, and evaluation of expressions. Use PGDBG to control execution and examine the state of a program either symbolically using source code or at the assembly level. PGDBG allows switching contexts between threads in a parallel region, and to step or examine the state of any executing thread. PGDBG is also interoperable with the GNU compilers and other compilers that generate DWARF format debugging information. More information is available in the PGI Tools Guide and the PGI CDK Release Notes.
Watch the seven minute PGDBG demo.