Let's assume that you select Connected States in Thread view in
``Preview'', when you click on the Display buttons in the ``View
& Frame Selector'' window. A Time Lines window as shown in Figure
will pop up. The Time Lines window provides a detailed display of the sppm trace
data as a GANTT chart with the x-axis as time and the y-axis as thread ID. The
control buttons in the top panel provide zoom IN and OUT operations
around the zoom focus, which could be set by putting the cursor at the point
of interest on the GANNT chart and pressing the key ``z''. In Figure
,
the zoom focus is marked by a white line drawn from the top to the botton of
the diagram and is labeled as ZOOM LOCK in red.
After being zoomed in several times, the Time Lines window looks like Figure
. At this resolution, many
more details are exposed. For instance, the MPI_Isend states that are in navy
blue in the figure become noticeable. Clicking on any rectangle in the Time
Lines canvas will pop up a ``Rectangle Info'' box which contains various
information regarding the subroutine call(e.g. start and end time of the call),
and various call arguments and instruction address(es) if there are any. Clicking
on the ``Rectangle Info'' box again will remove the box from the screen.
Also, clicking on the red circle at the end of the arrow will pop up a ``Arrow
Info'' box, which provides a function similar to that of ``Rectangle Info''.
In Figure
, MPI_Isend, MPI_Irecv,
and MPI_Wait are all nested within the user-defined state ``bdrys''.
This suggests that ``bdrys'', which is a user-defined subroutine call,
makes all these MPI calls. Also, the regularity of the pattern of arrows can
provide insight about how data are exchanged.
Several tricks and hidden operations are worth mentioning. First, it is the
trick in locating small rectangles: since all the rectangles have a white border
surrounding them, when many small rectangles are next to each other in very
low resolution, they form a completely white rectangle. A totally white rectangle
usually means a lot more details are hidden inside. Second, a trick about scrolling:
you can drag on the scroll tab to advance to later time, but scrolling becomes
slow when there are many threads with a lot of objects. In this case, click
on the white space between the scroll tab and the end arrow tab in the direction
that you want to advance to. The operation will allow the next time frame in
the canvas to be redrawn immediately. Third, the label of the y-axis in Thread
view is (MPI-rank, local thread ID), but it is different in different views.
Because of the limited space on the canvas, the label of the y-axis is actually
written in the tooltip of the two vertical y-axis label. The tooltip can be
activated by simply putting the cursor over any y-axis integer doublet for few
seconds. Fourth, doubly clicking on any integer doublet label will invoke the
``Time Lines Manipulation'' window as shown in Figure .
This window provides various operations on the selected time line, for instance,
the adjustment of time line by changing the offset of the time line for alignment
of rectangles, or the swapping of different time lines for organizational purposes.