oldindex.html
by
admin
—
last modified
2007-12-11 00:36
Click here to get the file
Size
13.3 kB
-
File type
text/html
File contents
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
HPCToolkit Documentation: Editing within Netscape/Mozilla Composer
is possible, but it generates strange stuff in-line.
Please use an ordinary text editor.
-->
<html metal:use-macro="here/main_template/macros/master">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>HPCToolkit Documentation</title>
<link rel='stylesheet' type='text/css' href='styleForAll.css'>
</head>
<body>
<!-- ********************************************************************** -->
<script language="JavaScript" src="header_hpctools.js"></script>
<!-- ********************************************************************** -->
<div id="main" metal:fill-slot="main">
<!-- automatically updated by Emacs hook below; nicer than CVS Date -->
<p class="lastupdated">Last Updated: 2004-03-10</p>
<a name="toc"></a>
<h2>HPCToolkit Documentation (for version 3.7.0)</h2>
<h2>Contents</h2>
<ul>
<li><a href="#introduction">Introduction</a>
<li><a href="#overview">Overview</a>
<li><a href="#installation">Building, Installing and Using</a>
<li><a href="#notes">Notes</a>
<li><a href="#acknowledgments">Acknowledgments</a>
<li><a href="#contact">Contact</a>
</ul>
<!-- ********************************************************************** -->
<a name="introduction"></a>
<h2>Introduction</h2>
<p>HPCToolkit is a multi-platform package with tools for 1) collecting
raw profile information, 2) converting various types of profiling
information into platform independent XML formats and 3) synthesizing
browsable representations that correlate performance metrics gathered
from multiple sources with program source code. Two versions of the
final database allow users to view the analysis results with either a
standard commodity web browser or a Java viewer that is part of
HPCToolkit.</p>
<p>The HPCToolkit package has been especially designed to use profile
data that have been collected using the <b>hardware performance
counters</b> built into all modern microprocessors. The advantage of
using performance counters for profiling is usually lower profiling
overhead and the ability to make more precise measurements. In
previous versions of this package (under the name HPCView 1.0-3.1), a
factor limiting multi-platform support has been a particular reliance
on vendor-supplied profiling tools from SGI and Compaq/Tru64. We
still support these tools, but we have now added ia64-Linux (Itanium and
Itanium2) and i686-Linux profiling support with
<span class="hpctool">papirun/papiprof</span>, a prototype profiling tool,
-- analagous to SGI's <span class="xtool">ssrun</span> --
for profiling <a href="http://icl.cs.utk.edu/projects/papi/">PAPI</a>
events on an unmodified application binary. Finally, we are also
working on a call stack profiler for IA64-Linux and Alpha-Tru64 and a
corresponding Java-based viewer. We hope to eventually port the
profiler to more platforms.</p>
<p>The analysis tool that performs the final synthesis is called
<span class="hpctool">hpcview</span>. <span class="hpctool">hpcview</span>
correlates profile data associated with lines in a program with
the source code for the program and presents performance metrics in
a hierarchical display. It can generate particularly useful output when
supplied with output from the <span class="hpctool">bloop</span>
binary analyzer along with performance profile data.
<span class="hpctool">bloop</span> analyzes the program structure of
application binaries and recovers information about loop nesting
structure. Information from <span class="hpctool">bloop</span> enables
<span class="hpctool">hpcview</span> to report performance information
at the loop level, where it is most meaningful for scientific programs.
<span class="hpctool">hpcview</span> is language independent.</p>
<p><span class="hpctool">hpcview</span>'s correlation of performance
metrics with source code results in a browsable representation.
Traditionally, it generates a database full of HTML and JavaScript
files intended to be viewed with standard commodity web browsers.
Recently, we have added support for generating much smaller and more
trasferable databases for viewing with the Java
<span class="hpctool">hpcviewer</span>.</p>
<!-- ********************************************************************** -->
<a name="overview"></a>
<h2>Overview</h2>
<p><i>[<a href="#toc">Contents</a>]</i>
<p>HPCToolkit consists of several components. See the man pages of
individual tools for more information.
<h3>Program Structure Recovery</h3>
<div class="indent">
<p>Often, it is useful to report performance metrics at the loop level
rather than just the procedure, file or line level. The
<a href="hpc_bloop.html" class="hpctool">bloop</a> binary analyzer
recovers the loop nesting structure of a program from the program's
application binary. It can analyze binaries compiled by common
compilers on:</p>
<ul class="noindent">
<li>alpha-OSF1
<li>i686-Linux
<li>ia64-Linux
<li>mips-IRIX64
<li>sparc-SunOS
</ul>
<p>Program structure data is described in an XML file of type
<a href="dtd_pgm.html" class="hpctool">PGM</a>.
</div> <!-- class=indent -->
<h3>Profile Data Collection</h3>
<div class="indent">
<p>We are working on tools that collect profiling information and
convert it directly to our platform-independent XML
<a href="dtd_profile.html" class="hpctool">PROFILE</a> file format.</p>
<p>We have developed a prototype of
<a href="hpc_papiprof.html" class="hpctool">papiprof</a>
which profiles an unmodifed application binary (including DSOs). Because
it uses <a href="http://icl.cs.utk.edu/projects/papi/">PAPI</a>, it
is potentially very portable; in fact the UTK PAPI team is
currently working to integrate it with the PAPI distribution.
<a href="hpc_papiprof.html" class="hpctool">papiprof</a> can convert
data directly to our
<a href="dtd_profile.html" class="hpctool">PROFILE</a> format for use
as input into <a href="hpcview.html" class="hpctool">hpcview</a>.
The prototype has been tested on: </p>
<ul class="noindent">
<!-- <li>i686-Linux: Pentium III (Pentium IV should now be supported
but we have not tested it.) -->
<li>ia64-Linux: Itanium, Itanium2
</ul>
</div> <!-- class=indent -->
<h3>Profile Data Filters for Vendor-supplied Data Collection Tools</h3>
<div class="indent">
<p>Each platform vendor gives different names to their hardware
performance counter metrics and has a different format for their
output files. Vendor-supplied tools for presenting information
gleaned from hardware performance counters format their profiling
output to be (marginally) intelligible to humans rather than be read
by another tool. We expect
<a href="hpc_papiprof.html" class="hpctool">papiprof</a>
to help alleviate this problem.</p>
<p>In the mean time, however, HPCToolkit has a set of filters written in
Perl that convert vendor specific profiles into standard
<a href="hpcview.html" class="hpctool">hpcview</a> inputs using XML as a
self-describing markup language. The
<a href="hpc_ptran.html" class="hpctool">ptran</a> script will translate
data files produced by either SGI's or Compaq's
<span class="xtool">prof -lines</span> command into
<a href="dtd_profile.html" class="hpctool">PROFILE</a> documents
for input to <a href="hpcview.html" class="hpctool">hpcview</a>. On SGI
R10K/R12K+ systems and Compaq Alpha systems running Tru64, data is
gathered using <span class="xtool">ssrun</span> or
<span class="xtool">uprofile</span>, respectively.</p>
<p>Another tool, <a href="hpc_xprof.html" class="hpctool">xprof</a>,
can be used to create
<a href="dtd_profile.html" class="hpctool">PROFILE</a>
documents from data collected using DCPI's
<span class="xtool">dcpicat</span> on Compaq Tru64 systems
(including ProfileMe events).</p>
</div> <!-- class=indent -->
<h3>Data Combination</h3>
<div class="indent">
<p>The <a href="hpcview.html" class="hpctool">hpcview</a> program at
the center of the package uses an XML configuration
(of type <a href="dtd_hpcview.html" class="hpctool">HPCVIEW</a>)
that directs the process of:</p>
<ul class="noindent">
<li>reading source code, program structure information, and profile
data
<li>computing derived metrics
<li>correlating performance metrics with source code, and
<li>generating a browsable database.
</ul>
<p><a href="hpcview.html" class="hpctool">hpcview</a> runs on the
following platforms; the profiling and analysis architectures need not
match:
<ul class="noindent">
<li>alpha-OSF1
<li>i686-Linux
<li>ia64-Linux
<li>mips-IRIX64
<li>sparc-SunOS
</ul>
</div> <!-- class=indent -->
<h3>Browsing</h3>
<div class="indent">
<p>The 'classic' browsable database created by
<a href="hpcview.html" class="hpctool">hpcview</a> is a
self-contained directory of HTML and Javascript files that can be
browsed using Internet Explorer 5.0+, Netscape 6.2+, or Mozilla 1.0+
compatible browsers. (Netscape 4.x is supported, but see the notes
in on the <a href="hpcview.html" class="hpctool">hpcview</a> man page.)
Among other things, this facilitates using PCs to analyze data from
Unix systems and it allows collaborative performance analysis across
the net. Recently, we have added support for generating much smaller
and more trasferable databases for viewing with the Java
<a href="hpcviewer.html" class="hpctool">hpcviewer</a>.</p>
<p>On SGI and Compaq/Alpha systems, the simplest way to use
<a href="hpcview.html" class="hpctool">hpcview</a> for
correlating performance data with source code is by using a simple
script called <a href="hpcquick.html" class="hpctool">hpcquick</a>.
However, more precise control can be exercised over the database and
tools by using them directly.</p>
</div> <!-- class=indent -->
<!-- ********************************************************************** -->
<a name="installation"></a>
<h2>Building, Installing and Using</h2>
<p><i>[<a href="#toc">Contents</a>]</i>
<p>To <b>download and build</b> the sources, follow these
<a href="building.html">build instructions</a>.
<p>To <b>use</b> an installed toolkit, prepare your
<a href="building.html#use_hpctoolkit">environment</a>.
<p><b>Documentation</b> is located at
<code>${HPCTOOLKIT}/doc/index.html</code>.
<p>For some <b>examples</b> and sample scripts and
<a href="hpcview.html" class="hpctool">hpcview</a> configuration files,
see the directory <code>${HPCTOOLKIT}/examples</code>.
<!-- ********************************************************************** -->
<a name="notes"></a>
<h2>Notes</h2>
<p><i>[<a href="#toc">Contents</a>]</i>
<p>For an overview of the directories and files in the distribution, see
<a href="../README.Index"><code>${HPCTOOLKIT}/README.Index</code></a>.
<p>For specific release information, see
<a href="../README.ReleaseNotes"><code>${HPCTOOLKIT}/README.ReleaseNotes</code></a>.
<!-- ********************************************************************** -->
<a name="acknowledgments"></a>
<h2>Acknowledgments</h2>
<p><i>[<a href="#toc">Contents</a>]</i>
<p>Development of HPCToolkit was supported in part though the Department
of Energy Accelerated Strategic Computing Initiative (LLNL Subcontract
B347884), the Department of Defense CEWES ERDC MSRC Programming
Environment and Training program, the Los Alamos Computer Science
Institute, and the National Computational Science Alliance.</p>
<p>HPCToolkit includes software developed by the
<a href="http://www.apache.org">Apache Software Foundation</a>, namely the
<a href="http://xml.apache.org/xerces-c/">Xerces C++ Parser</a>
for XML. The HPCToolkit distribution contains only those parts of Xerces
used by HPCToolkit: include files and shared libraries.</p>
<p>HPCToolkit also uses various libraries from
<a href="http://sources.redhat.com/binutils/">GNU's binutils</a> package.
Since we have had to make several modifications (most of which have
now been officially accepted into the code base), the full modified
source is included in the HPCToolkit source code distribution.</p>
<p>Some profiling tools currently under development use
<a href="http://icl.cs.utk.edu/projects/papi/">PAPI</a> to
interface with hardware performance counters.
<!-- ********************************************************************** -->
<a name="contact"></a>
<h2>Contact</h2>
<p><i>[<a href="#toc">Contents</a>]</i>
<p><a href="http://www.hipersoft.rice.edu/hpctoolkit">HPCToolkit</a>
Web site.
<p><a href="http://www.hipersoft.rice.edu">HiPerSoft</a> Web site.
<p>Group e-mail: hpc (at) cs.rice.edu
<p>Individuals:
<blockquote>
<a href="http://www.cs.rice.edu/~johnmc">John Mellor-Crummey</a> <br>
Department of Computer Science <br>
Rice University, MS 132 <br>
6100 Main Street <br>
Houston TX 77005 <br>
johnmc (at) rice.edu <br>
</blockquote>
<blockquote>
<a href="http://www.cs.rice.edu/~rjf">Rob Fowler</a> <br>
Department of Computer Science <br>
Rice University, MS 132 <br>
6100 Main Street <br>
Houston TX 77005 <br>
rjf (at) rice.edu <br>
</blockquote>
<!-- ********************************************************************** -->
<script language="JavaScript" src="footer_hpctools.js"></script>
<!-- ********************************************************************** -->
</div> <!-- id=main -->
</body>
</html>
<!-- Local Variables: -->
<!-- eval: (add-hook 'write-file-hooks 'time-stamp) -->
<!-- time-stamp-start: ">Last Updated: " -->
<!-- time-stamp-format: "%:y-%02m-%02d" -->
<!-- time-stamp-end: "<" -->
<!-- time-stamp-line-limit: 35 -->
<!-- End: -->