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
Powerful GUI
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.
Easy-to-use Features
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.
Technical Features
A partial list of technical features supported includes the following:
PGDBG OpenMP & MPI Debugger
(included with PGI Workstation class and PGI Server class products and the PGI CDK)
-
Debug F77, F95, C and C++ programs
-
Debug assembly language
-
Debug parallel OpenMP and MPI programs.
-
Supports MPICH, MPICH-2, MVAPICH, OpenMPI, HP-MPI and MSMPI libraries
-
Supports pthreads on Linux and Mac OS X, and native threads on Windows.
-
The PGI CDK debugger supports process-level MPI debugging, thread-level OpenMP debugging and hybrid combinations of MPI and OpenMP debugging support for up to a maximum of 256 MPI processes + OpenMP threads.
-
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 Mac OS X and DLL's on Windows
-
DBX compatible commands
-
One touch breakpoint setting
-
Step into, over or out of functions
-
Watchpoints
-
Traceback
-
One touch symbolic display
-
Read and process core files
-
Multiple format display of values or strings
-
Log files
-
Comprehensive built-in help facilities
-
Interoperable with GNU and other compilers that generate DWARF format debugging information.
PGDBG GUI Windows
-
Main window with Source Code Panel and Thread/Process Grid Panel
-
Source Panel displays source code, assembly code or an interleaved mix along with breakpoints
-
Thread/Process Grid Panel displays thread/process state in color and active thread/process status summary
-
Run control buttons
-
Register subwindow for formatted register states
-
Memory subwindow for formatted memory segments
-
Custom Display subwindow—track variables and array sections in multiple formats
-
Messages subwindow displays the MPI state
PGDBG Process/Thread Control
-
Control OpenMP threads individually or collectively
-
Control processes individually or collectively
-
Auto-detect MPI processes
-
Auto-detect OpenMP threads
-
Attach to a running MPI, OpenMP, and hybrid parallel programs. PGDBG automatically acquires each MPI process, and OpenMP thread
-
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:
- Break, Next, Step, Continue, Wait or Halt
- Display of process/thread status and location
- Switch contexts between threads/processes
System Requirements
-
Hardware: 64-bit x64 or 32-bit x86 processor-based workstation or server with one or more single core or multicore AMD64 and Intel 64 microprocessors.
-
Operating System:
-
Linux: OpenMP and MPI debugging is supported on any Linux operating system with kernel revision 2.2.10 or higher. PGDBG is fully interoperable with versions of Linux which use kernel revision 2.4 and glibc 2.3.2 or higher.
-
Mac OS X: OpenMP and MPI debugging of both 64-bit and 32-bit applications is supported on 64-bit Mac OS X 10.5.x (Leopard) operating systems.
-
Windows: OpenMP and MSMPI debugging is supported on 64-bit Microsoft Windows Vista, XP Professional x64 Edition, Windows Server 2008 (x64), Windows Server 2003 x64 Edition and Subsystem for UNIX-based Applications (SUA) and on 32-bit Microsoft Windows Vista, XP Professional, Windows Server 2008 (x86), Windows Server 2003, SUA and Services for UNIX (SFU). In addition, the PGI CDK for Windows also supports debugging of up to 256 Microsoft MPI (MSMPI) processes on Compute Cluster Server and Windows HPC Server 2008.
-
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.
-
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.