XMPI - A Run/Debug GUI for MPI

XMPI is an X/Motif based graphical user interface for running, debugging and visualizing MPI programs. Extensive MPI information is extracted from a running application on demand, or from a cummulative log of communication. Both sources are tightly integrated with an application overview window and any number of single process focus windows.

XMPI is an excellent console for teaching MPI because students can vividly see the results of message-passing functions.

Key Features

Application Overview

After interacting with XMPI to run an MPI application, a honeycomb representation of all processes is displayed in the main (overview) window. Icons inside each cell indicate the execution state of the process and alert the user to any unreceived messages. Processes are identified by their rank in MPI_COMM_WORLD. A button click updates the information across the entire application - while the application is running (or perhaps deadlocked or otherwise hung). This simple capability to inspect, at runtime, the synchronization state of processes and messages is a very effective debugging tool. Source code steppers and "printf" are often used to get at the same information, but in a more cumbersome manner.

Application Overview: processes and messages at a glance

Process Focus

A process window with full MPI details on a single process and its unreceived messages is popped up by a mouse click on an interesting cell in the application overview. The key MPI communcation parameters are displayed: communicator, source rank, destination rank, and element count. For the datatype, a button pops up a description of the type map. For the communicator, a button highlights the group membership in the overview window. Several process windows may be on the screen simultaneously so that the user can focus on problem interactions between a few processes. As with the overview window, all of the process windows are updated when a new snapshot is taken.

Process Focus: details on process status and its unreceived messages

The datatype button displays the type map.
The next button shows the next group of identical messages.
The group button highlights the members of the communicator's process group.

Communication Trace Visualization

XMPI can cause the communication activity of an application to be traced. The resulting trace data can be extracted at runtime or after the application completes. The trace data is visualized in two tried and true ways: the communication timeline and the kiviat radial chart. Within XMPI however, these common views are highly intergrated into the overall debugging picture. Using a dial in the timeline window, a snapshot of the application state can be taken as if the same snapshot was taken at the selected time during the application's run. The results are displayed in the same manner, using the overview window and the processes windows.

Communication Timeline: Placing the dial gives a full snapshot of MPI details.


Kiviat: Process states are cummulative from the start to the dial time.

How to Get XMPI

XMPI was developed at the Ohio Supercomputer Center and is freely available under a GNU license from the LAM ftp site.

XMPI can examine pre-existing trace files without running LAM. Due to the symmetry and integration described above, a fairly full impression of the tool can be gained in this manner. Binary executables are available for quick evaluation. XMPI is supported on the following systems.

LAM / MPI Parallel Computing / Ohio Supercomputer Center / lam@tbag.osc.edu