~ubuntu-branches/ubuntu/trusty/cctools/trusty-proposed

« back to all changes in this revision

Viewing changes to wavefront/doc/wavefront.html

  • Committer: Package Import Robot
  • Author(s): Michael Hanke
  • Date: 2011-10-26 11:51:10 UTC
  • mfrom: (1.1.3)
  • Revision ID: package-import@ubuntu.com-20111026115110-5pc2qxp03chldcdi
Tags: 3.4.0-1
* New upstream release.
* Improve DEP5 compliance of debian/copyright.
* Added patch to make "starch" use python instead of python2 as interpreter.
* Tighten build-dependencies (added swig and m4).
* Enable MPI-support for work-queue.
* Move to dh_python2.
* Split Python-bindings for workqueue into a dedicated package and build
  them for all supported Python versions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<html>
2
 
<head>
3
 
<title>Wavefront User's Manual</title>
4
 
</head>
5
 
 
6
 
<body>
7
 
 
8
 
<style type="text/css">
9
 
pre {
10
 
background: #ffffcc;
11
 
font-family: monospace;
12
 
font-size: 75%
13
 
font-align: left;
14
 
white-space: pre;
15
 
border: solid 1px black;
16
 
padding: 5px;
17
 
margin: 20px;
18
 
}
19
 
</style>
20
 
<h1>Wavefront User's Manual</h1>
21
 
<b>Last Updated February 2010</b>
22
 
<p>
23
 
Wavefront is Copyright (C) 2010 The University of Notre Dame.
24
 
This software is distributed under the GNU General Public License.
25
 
See the file COPYING for details.
26
 
<p>
27
 
 
28
 
<table>
29
 
<tr>
30
 
        <td valign=middle>
31
 
                <a href=wavefront_large.gif><img src=wavefront_small.gif align=right border=0></a>
32
 
        </td>
33
 
        <td valign=middle>
34
 
                <div id=abstraction>
35
 
Wavefront( array R[x,0], array R[0,y], function F(x,y,d) )<br>
36
 
returns matrix R where<br>
37
 
R[i,j] = F( R[i-1,j], R[i,j-1], R[i-1,j-1] )<br>
38
 
                </div>
39
 
        </td>
40
 
</tr>
41
 
</table>
42
 
 
43
 
The Wavefront abstraction computes a two dimensional recurrence relation.
44
 
You provide a function F that accepts the left (x), right (y), and diagonal (d)
45
 
values and initial values for the edges of the matrix.  You may optionally
46
 
provide additional parameters for each cell, given by a matrix P.
47
 
The abstraction then runs each of the functions in the order of dependency,
48
 
handling load balancing, data movement, fault tolerance, and so on.
49
 
<p>
50
 
To use Wavefront, install the <a href=/~ccl/software/downloadfiles.shtml>Cooperative Computing Tools</a> and run the program named <tt><b>wavefront</b></tt>.  Create files named <tt>R.0.0</tt> through <tt>R.0.n</tt> and <tt>R.0.0</tt> through <tt>R.n.0</tt>.  Then run wavefront, specifying the program that computes each cell, and the number of cells in each dimension:
51
 
 
52
 
<pre>
53
 
wavefront ./func.exe 10 10
54
 
</pre>
55
 
 
56
 
The program <tt>func.exe</tt> may be written in any language that you like.
57
 
For each cell of the result, the program will be invoked like this:
58
 
 
59
 
<pre>
60
 
./func.exe R.3.2 R.2.3 R.2.2 > R.3.3
61
 
</pre>
62
 
 
63
 
Wavefront will check for a few error conditions, and then start to run,
64
 
showing progress on the console like this:
65
 
 
66
 
<pre>
67
 
# elapsed time : waiting jobs / running jobs / complete jobs (percent complete)
68
 
0 : 0 / 1 / 0 (%0.00)
69
 
5 : 0 / 2 / 1 (%1.23)
70
 
10 : 0 / 3 / 3 (%3.70)
71
 
16 : 0 / 4 / 6 (%7.41)
72
 
21 : 0 / 4 / 8 (%9.88)
73
 
...
74
 
</pre>
75
 
 
76
 
When complete, your outputs will be stored in files named <tt>R.i.j</tt>, once for each cell computed.  If you have parameters for each function, then
77
 
place them in files named <tt>P.i.j</tt> and give the <b>-P</b> option to Wavefront.
78
 
<p>
79
 
If you run Wavefront on a single-CPU machine, then exactly one process will run at once.  If you run it on a multi-core machine, it will employ all available processors.  If you have a Condor or SGE batch system, give the <b>-T condor</b> or <b>-T sge</b> option, and and up to 1000 jobs will run at once on Condor.  You may also explicitly
80
 
control the maximum number using the <b>-n</b> option.  For example, here is a graph of a 100 by 100 problem run on a 64-core machine, where each F takes about five seconds to execute:
81
 
<p>
82
 
<img src=wavefront_progress.gif>
83
 
<p>
84
 
The <b>-B</b> option will write a bitmap progress image every five seconds.
85
 
Each pixel represents the state of one cell in the matrix: green indicates complete, blue currently running, yellow ready to run, and red not ready.  Here is an example of the progress of a small ten by ten job using five CPUs:
86
 
<p>
87
 
 
88
 
<table>
89
 
<tr>
90
 
<td><img src=wavefront_progress1.gif>
91
 
<td><img src=wavefront_progress2.gif>
92
 
<td><img src=wavefront_progress4.gif>
93
 
<td><img src=wavefront_progress5.gif>
94
 
</table>
95
 
 
96
 
Note that at the broadest part of the workload, there are not enough CPUs to run all cells at once, so some must wait.  Also note that the wave does not need to run synchronously: cells may begin to compute as soon as their dependencies are satisfied.
97
 
 
98
 
<h2>For More Information</h2>
99
 
 
100
 
For the latest information about Wavefront, please visit our <a href=http://www.cse.nd.edu/~ccl/software/wavefront>web site</a> and subscribe to our <a href=http://www.cse.nd.edu/~ccl/software>mailing list</a>.