next up previous
Next: Sample Debugging Sessions Up: Our Approach Previous: Logical Time Manipulation

Ave: The Visual Feedback Scheme for Ariadne

In our earlier paper we presented Ariadne's [7] support for interactive, textual exploration of the program execution graph. The textual feedback, although complete, can overwhelm the user when the pattern to be matched is data dependent. As an example, consider the case when the user specifies the following behavior:
There can be a number of global communication phases. At each phase atleast one of the processors in the set {0,1,2,3} will send atleast one message followed by a synchronization operation performed by all processors. Each synchronization operation produces a barrier event, which is user-defined. The user can add this event to Ariadne's repertoire at run-time. The user may write a description like:
? ch msg = W @ R
? pch Comm = msg+ onsome {0,1,2,3};
? pch Synch = barrier onall {0,1,2,3};
? match Scatter = (Comm Synch)*;

The chain msg describes a single message by matching the send (W) and the receive (R) of the same message (@ implies following the edge that connects the send and the receive of the message). At the pchain level onsome suggests that the chain should match on atleast one processor.

Say there were 2 communication phases. On the first communication phase processors 0 and 2 sent 2 and 3 messages respectively. In the second phase only processor 3 sent 2 messages.

With data dependency permeating different hierarchical abstraction levels, we must allow the user to control the feedback. In the above example, the user is interested in feedback at different levels:

PtChain level: How many phases were there?

Pchain level: Which processors took part in different phases?

Chain level: How many messages did a particular processor send in a given phase? Also depending on the abstraction, a pt-chain can have more than one hierarchical level, and the user would want to know about aspects of different hierarchical abstractions separately. So we need to give users the control to meaningfully explore the match tree and provide the feedback in a hierarchical manner.

  
Figure: Initial feedback of Ave.

Ave produces the display shown in Figure 1 at the beginning. Note that Ave has collapsed the behavior at the p-chain level. The node in green rectangle represents behavior collapsed over a processor set. Although each processor in the set executes a pattern msg+, the number of messages sent by individual processors may be different. Ave shows it by printing the total number of processors in the set, followed by number of partitions. (2,2) says that there are 2 processors in the set, and there are 2 partitions: that is the processors behaved differently. In the second phase since the number of processors is 1, the processor number is shown in green, followed by a node msg^2 showing how many messages were sent by the processor. The user can click on the collpased node, and ask Ave to expand it fully, and get the display shown in Figure 2. \ Ave uses the following color scheme to show the events: All events are colored blue, the processor sets over which behavior is collapsed is colored green. If an event did not match, then it is colored red. The red events, if they are present, must form the right boundary of the display: since Ariadne stops as soon as it fails to match an event. The only exception is when the match fails due to the failure of logical assertions: in this case the events between which the assertion fails for the first time is surrounded by a red rectangle (see the Gaussian elimination example).

  
Figure: Ave feedback with behaviors uncollapsed.

Ave's match tree oriented feedback can present information in a hierarchical fashion, and can make it easy for the user to comprehend. Later in Section 3 we give two examples where the animating the match tree itself leads the user to the bug without any further exploration.

Ariadne's scalability is translated to Ave's animation scheme, since the pchain level pattern description collapses similar behavior on the part of different processes onto a single abstract event. Once the user specified pattern has been matched, the user is free to compute different attributes of the abstract events defined in the match. Ave partitions the attribute space into equivalent classes --- each class being assigned a distinct color. This color scheme makes it possible for the user to mentally group similar abstract events.

Although the pchain level description collapses similar behavior across sets of processes, Ave can show the behavior of individual processes if so asked (as is needed in the data dependent pattern described earlier).

If the match fails, Ave displays the partial match tree (the portion that matched), with the failure point highlighted in red.



next up previous
Next: Sample Debugging Sessions Up: Our Approach Previous: Logical Time Manipulation



Joydip Kundu kundu@neweng.enet.dec.com