Debug Parallel MPI and OpenMP Cluster Applications
PGDBG® is a graphical debugger for Linux, OS X and Windows capable of debugging serial and parallel programs including MPI process-parallel, OpenMP thread-parallel and hybrid MPI/OpenMP applications. PGDBG can debug programs on SMP workstations, servers, distributed-memory clusters and hybrid clusters where each node contains multiple 64-bit or 32-bit multicore processors.
PGDBG is included with all PGI products. The PGDBG version included with PGI Workstation supports debugging up to a maximum of eight local MPI processes. The PGDBG version included with PGI Server supports debugging up to a maximum of 16 local MPI processes. The PGDBG version included with the PGI CDK® Cluster Development Kit® is available in configurations capable of debugging a maximum of 64 or 256 parallel MPI processes. PGDBG can debug up to 64 OpenMP threads per 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 cluster. Perform Step, Break, Run and Halt actions 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 process in your cluster application and each thread on each multi-core cluster node. The Main window displays Fortran, C or C++ program source code. It includes one-touch buttons for actions such as Run, Break, Quit or Print. Additional controls on the Main window allow selecting and controlling 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 is interleaved with the source code. Assembly language stepping and breakpoint indicators are enabled as well.
In addition to the main source code window, PGDBG provides supplementary program information in a number of tabbed panels:
- Call Stack tab displays the sequence of nested procedure calls
- Register tab displays register values in a variety of formats
- Locals tab displays contents of variables in the current scope
- Memory tab displays a region of memory
- Command tab provides a PGDBG command line interface
- Events tab shows current breakpoints, watchpoints, etc.
- Process/Thread tab provides a graphical view of the application state
- Status tab provides a text-based view of the application state
- MPI Messages tab provides a dump of MPI message queues (MPI only)
- Groups tab supports named grouping of OpenMP threads and MPI processes
PGDBG handles Fortran, C and C++ programs. It is DBX-compatible and includes an extended command language for setting breakpoints and watchpoints, and for evaluating 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 PGDBG Debugger Guide.
PGDBG complements PGI's powerful MPI and OpenMP parallel graphical performance analysis profiler, PGPROF®.
A partial list of technical features supported includes the following:
PGDBG OpenMP & MPI Debugger
- Debug Fortran, C and C++ programs
- Debug assembly language
- Debug parallel OpenMP and MPI programs
- Supports MPICH, MPICH-2, MPICH3, MVAPICH, MVAPICH2, Open MPI, SGI-MPI and MSMPI libraries
- Supports pthreads on Linux and OS X, and native threads on Windows
- PGI Workstation debugger supports debugging locally up to eight MPI processes
- PGI Server debugger supports debugging locally up to 16 MPI processes
- The PGI CDK debugger supports process-level MPI debugging, thread-level OpenMP debugging and hybrid combinations of MPI and OpenMP debugging for up to a maximum of 256 remote MPI processes.
- Supports thread-level OpenMP debugging up to a maximum of 64 threads per process.
- Examine message queues
- Debug shared objects loaded at randomized addresses on Linux, dynamic libraries on OS X and DLL's on Windows
- DBX compatible commands
- One touch breakpoint setting
- Step into, over or out of functions
- One touch symbolic display
- Read and process core files
- Multiple format display of values or strings
- Log files
- Interoperable with GNU and other compilers that generate DWARF format debugging information.
PGDBG GUI Windows
- Source code display in source, assembly or interleaved.
- Execution control buttons.
- Process/thread selectors.
- Debug information tabs for call stack, registers, local variables, memory, MPI messages, process and thread state.
PGDBG Process/Thread Control
- Control OpenMP threads individually or collectively
- Control processes individually or collectively
- Auto-detect MPI processes
- Auto-detect OpenMP threads
- View OpenMP private data
- Inspect the MPI message queues for each MPI process
- Color-coded process/thread state
- Synchronize threads/processes
- For each process or thread:
- Perform Step, Break, Run and Halt actions
- Display of process/thread status and location
- Switch contexts between threads/processes
- Hardware: 64-bit x64 or 32-bit x86 processor-based workstation or server with one or more single core or multicore microprocessors.
- Operating System:
- Linux: OpenMP and MPI debugging is supported on any Linux operating system with kernel revision 2.2.10 or newer. PGDBG is fully interoperable with versions of Linux which use kernel revision 2.4 and glibc 2.3.2 or newer.
- OS X: OpenMP and MPI debugging of both 64-bit and 32-bit applications is supported on 64-bit OS X 10.6.x (Snow Leopard) or newer operating systems.
- Windows: OpenMP and MSMPI debugging is supported on 64-bit and 32-bit Microsoft Windows XP and newer operating systems.
- Hard Disk: 400 MB on front-end node; 50 MB on each cluster node.
- Display: Requires a minimum of 800 x 600 resolution monitor.
- Memory: Minimum 32 MB per cluster node. 128 MB recommended for front-end node. (Note: Memory requirements for the front-end node increase dramatically for MPI programs with randomized loading.)
- Hard Disk: 400 MB on front-end node; 50 MB on each cluster node.
- Peripherals: Mouse or compatible pointing device for use of optional graphical user interfaces.
Other: Adobe Acrobat Reader for viewing documentation.