blob: 2fdb70ee8eae349eb56b6f6a0dc2b9888f6fe16b [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>Analyzer View</title>
</head>
<body>
<a name="top"></a>
<table cellspacing="5">
<tr>
<td>
<img src="images/trident_transparent.png">
</td>
<td>
<h1>Analyzer View</h1>
</td>
</tr>
</table>
<hr>
<h2>Using the Analyzer View</h2>
<p>
Before formally verifying an MPI C/C++ application, the number of processes needs to be set
for the verification run. You will also need to know how to run GEM itself. The links below
detail these processes:
</p>
<ul>
<li>
<a href="gettingStarted.html">Getting Started</a>
</li>
<li>
<a href="setNumProcs.html">Setting the Number of Processes</a>
</li>
<li>
<a href="gettingStarted.html#rungem">Running GEM</a>.
</li>
</ul>
<p>
When GEM has finished the verification of your MPI C/C++ application, the Console, Browser and Analyzer Views will all be
opened and depending on what is specified in the <a href="preferences.html#gemprefs">GEM Preference Page</a>,
one of these views will be brought to the foreground and given the active focus.
</p>
<h2>Analyzer Overview</h2>
<p>
This unique user interface visually displays the output from the log file that was generated
at runtime by highlighting lines representing match sets (p2p and collective send-recv matches) in the source file.
It shows both the current MPI call, and any matching point-to-point or collective operation. It also allows the
user to examine MPI calls for a particular rank with an easy to use <b>Rank Lock</b> feature. In addition, it
has a feature to browse calls by rank and by interleaving, as well as launch the
<a href="happensBeforeViewer.html">Happens Before (HB) Viewer</a>.
</p>
<p>
<i>The image below shows what the Analyzer View might look like followed by an explanation of its components.</i>
</p>
<img src="images/analyzerIntegration.png" width="990" height="682"/>
<h2 id="runtimeInfo">Runtime Information</h2>
<p>
On the far left is a label that explains how the program terminated, whether by a deadlock, assertion violation,
or without error. The text is green if the nothing is wrong and red when GEM is reporting a problem.
</p>
<h3 id="hbviewer">Button Explanations</h3>
<p>
<img height="20" src="images/setNumProcsCombo.gif" width="47" /> The drop down combo-box shows the current number of
processes and lets the user conveniently choose a new value for the next GEM run.
</p>
<p>
<img height="16" src="images/trident.gif" width="12" /> This will re-run GEM on the current MPI project. This is
equivalent to choosing &#34;Formally Verify MPI Program&#34; from the toolbar button drop-down and is provided for convenience.
</p>
<p>
<img height="17" src="images/hpv-trident.gif" width="15" /> This button will launch the
<a href="happensBeforeViewer.html">Happens Before (HB) Viewer</a>, a graphical tool
for examining all processes at once and their interactions on a more global level.
</p>
<p>
<img height="16" src="images/browse.gif" width="16" /> <b>Browse MPI Calls</b><br>
This opens a new window that shows all MPI Calls and groups them first by the rank that issued
them and then by the Interleaving they are found in.<br>
</p>
<ul>
<li>
Blue highlighted lines represent calls that are currently highlighted in the code windows.
</li>
<li>
Red highlighted lines represent calls that did NOT complete due to an error.
</li>
</ul>
<img src="images/callBrowser.png">
<br/><br/><br/>
<hr/>
<h2>Transitions</h2>
<p>
A transition is essentially an abstraction of an MPI call along with information regarding how the call
effects the state of the system. The top left section (aptly titled &quot;Transitions&quot;) lets
the user change which transition is currently being viewed.
</p>
The buttons from left to right let the user navigate to the:
<ul>
<li><img height="16" src="images/first-item.gif" width="16" /> first transition</li>
<li><img height="16" src="images/prev-item.gif" width="16" /> previous transition</li>
<li><img height="16" src="images/next-item.gif" width="16" /> next transition</li>
<li><img height="16" src="images/last-item.gif" width="16" /> last transition</li>
</ul>
<p>
Just to the right of the transition/interleaving buttons is a drop down menu that lets the user lock a
rank. The Lock Rank option also allows the user to only step to the previous and next call of a specific
rank, instead of all the ranks If no ranks are locked then the calls will be stepped through in internal
issue order or program order (depending on your selection in the <a href="#steporder">Step Order Section</a>).
</p>
<br/><br/>
<hr/>
<h2>Interleavings</h2>
<p>
An interleaving is a schedule of transitions, or in other words a possible
ordering of MPI calls issued by the scheduler. The top right section (titled &quot;Interleavings&quot;)
lets the user change which interleaving is being viewed. Doing this will automatically
move to the first transition of the new interleaving. These buttons let the user choose which
interleaving is currently being navigated.
</p>
The buttons from left to right let the user navigate to the:
<ul>
<li><img height="16" src="images/first-item.gif" width="16" /> first interleaving</li>
<li><img height="16" src="images/prev-item.gif" width="16" /> previous interleaving</li>
<li><img height="16" src="images/next-item.gif" width="16" /> next interleaving</li>
<li><img height="16" src="images/last-item.gif" width="16" /> last interleaving</li>
</ul>
<br/><br/>
<hr/>
<h2><a name="steporder">Step Order for MPI Calls</a></h2>
<p>
This is the order in which the <a href="#codewindows">Code Windows</a> will display transistions.
</p>
The radio buttons from left to right do the following:
<ul>
<li><b>Internal Issue Order:</b> Step through MPI calls in the order they were issued to the MPI runtime by the ISP Scheduler.</li>
<li><b>Program Order:</b> Step through MPI calls in the order they appear in the code.</li>
</ul>
<br/><br/>
<hr/>
<h2><a name="codewindows">Code Windows</a></h2>
<p>
At the top of this section are two labels that explain the MPI Call(s) currently being viewed.
On the left is the originating MPI call and on the right is the explanation of the matching MPI
call (for example an MPI Send may match with an MPI Recv and in such a situation the Send will be
described on the left and the Recv on the right). Some MPI Calls, such as collective operations do not
match with anything (like Barrier or Finalize for example) in this situation the label on the right
will be blank or simply list the processes involved with the coolective operation.
</p>
<p>
These labels have two lines of information. From top to bottom they are:
Rank (aka process id), and then the file and line number where the MPI call
is found in the source file.
</p>
<p>
Below these two labels are two windows that both hold complete copies of the
source file. These are used to visually show where the calls came from and how
they match. In the left window the originating call is highlighted and on
the right the matching call is highlighted.
</p>
<br/><br/>
<hr/>
<h2>Menu &#38; Toolbar Options</h2>
&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/terminate.gif" height="16" width="16">
Terminate Operation - Forcibly terminates the current GEM operation.
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/help-contents.gif" height="16" width="16">
Get Analyzer Help - Opens the Eclipse help topic related to the Analyzer View page.<br/>
<p>
<b>Note:</b> This same functionality can be obtained through the Analyzer View context and pull-down menus.
</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>