blob: 6d8f54b5e2b4cabb0ed98c1d7f0baa261dd121e8 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css" href="help.css">
<title>Happens Before Viewer</title>
</head>
<body>
<a name="top"></a>
<table cellspacing="5">
<tr>
<td>
<img src="images/trident_transparent.png">
</td>
<td>
<h1>Happens Before Viewer</h1>
</td>
</tr>
</table>
<hr>
<h2>Running the Happens Before Viewer</h2>
<p>
The Happens Before Viewer is actually an external tool and is launched from within the
<a href="analyzerView.html#hbviewer">Analyzer View</a> or on a pre-existing log file (generated
at runtime by GEM) directly. This is done via context menus as shown in the image below.
</p>
<p>
<i> Note: The log file and profiled executable generated by GEM will be in a directory named <b>&#34;gem&#34;</b> at
the top level of the current project.</i>
</p>
<ul>
<li>
From the Analyzer View, simply click the <b>HB Viewer</b> button after GEM has been run.
</li>
<li>
From the Project Explorer window, right click on the generated log file
and select <img height="16" src="images/hpv-trident.gif" width="13" />
<b>Launch Happens Before Viewer</b> from the GEM context menu.
</li>
</ul>
<br>
<center>
<img src="images/hpvPopUp.png">
</center>
<br><br>
<h2>Understanding What You See</h2><br>
<ul>
<li>
<b>Showing Interleaving:</b>&nbsp;&nbsp;indicates which interleaving is currently being shown and
the total number of interleavings GEM examined.
</li>
<li>
<b>Deadlock:</b>&nbsp;&nbsp;Is either followed by <font COLOR="#00ff00">no </font>or
<font COLOR="#ff0000">yes</font>, and indicates if any of the interleavings contain a deadlock.
</li>
<li>
<b>Red Bordered DEADLOCK:</b>&nbsp;&nbsp;At the bottom of the window indicates that at this point the currently selected
interleaving is deadlocked. Calls above this will be issued and calls that would come afterward are not shown.
</li>
<li>
<b>Process[Number]:</b>&nbsp;&nbsp;This specifies which Process the calls below it belong to (Where Number is the number
of the process in question). The color of the border around this text is arbitrary and serves only to help
the human eye distinguish the various columns and return to a column of interest more quickly.
</li>
<li>
<b>Blue Arrows:</b>&nbsp;&nbsp;Show CB (Completes Before) edges that connect intra-process MPI calls
(calls within the same MPI process). A CB edge is a guarantee that the source must complete before
the destination. For example a Barrier will always have a CB edge connecting it to the next call in
the same process because the next call cannot complete before the barrier is finished. It is
important to note though that there is only a CB edge to each call blocked by the call in
question. As an example lets imagine that a Barrier is followed by a second Barrier and then a Send. There
is a CB edge between the first and second Barrier and between the second Barrier and the Send, but none
between the first Barrier and the Send because it the second Barriers that directly blocks the send. The
CB edges are by default not shown, but the <a href="#changing">Changing What You See</a> section
below will show you how to make them appear.
</li>
<li>
<b>Red Arrows:</b>&nbsp;&nbsp;Show CB edges that connect inter-process MPI calls (calls between different processes).
</li>
<li>
<b>Black Arrows:</b>&nbsp;&nbsp;Connect MPI calls that match. For example a Send will have a Black Arrow pointing to the
Receive that picks up its message.
</li>
<li>
<b>Dotted Black Arrows:</b>&nbsp;&nbsp;Like solid Block Arrows these connect calls that match. The only difference
is that these connect a Red Bordered call.
</li>
<li>
<b>Red Borders:</b>&nbsp;&nbsp;Indicates that this call is the source of a different interleaving and is
the cause of the non-determinism (most likely some type of Recv with an MPI_ANY_SOURCE). In other words
what is currently being displayed is one potential match for the Red Bordered call, but that another
possible match exists and can be viewed by changing which interleaving is being shown.
</li>
</ul>
<br>
<img alt="" src="images/hpv.png">
<br><br>
<h2><a name="changing">Changing What You See</a></h2>
<ul>
<li>
To change which Interleaving you are viewing you can click on the &lt; or &gt; buttons or click “Goto”
after providing the desired interleaving number in the text box next to it.
</li>
<li>
To toggle whether or not you want matches to shown use the check box next to “Show Matches”.
</li>
<li>
To reset the view back to how it was before you made changes click the “Clear” button.
</li>
<li>
To see the source file that generated the log click on “Show Source”.
</li>
<li>
To add Completes-Before (CB) Edges, there are several choices.
For a given call, process or some subset of either (e.g. you can select all processes and all calls or
some subset therein)
<ol>
<li>
right click the call and select either View InterCB, View IntraCB or View Both as desired.
</li>
<li>
Lastly you will need to indicate whether you want to view the edgesin: the <b>Root Window</b>
or in a <b>Separate Window</b> (see images below). A separate window with IntraCB Edges is
shown below.
</li>
</ol>
<img src="images/cbChoices.png"><br><br>
<br><br>
<img src="images/process-intracb.png"><br><br>
</li>
</ul>
<p>
You may also change which log file you are viewing by clicking: File -&gt; Open Trace and navigate to the desired file.
</p>
<br/><br/>
<p><a href="#top">Back to Top</a> | <a href="toc.html">Back to Table of Contents</a></p>
<br/><br/>
<hr>
<center>
<p>
School of Computing * 50 S. Central Campus Dr. Rm. 3190 * Salt Lake City, UT
84112 * <A href="mailto:isp-dev@cs.utah.edu">isp-dev@cs.utah.edu</a><br>
<a href="http://www.eclipse.org/org/documents/epl-v10.php">License</a>
</p>
</center>
</body>
</html>