1 : |
jhr |
366 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
2 : |
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
3 : |
|
|
<html>
|
4 : |
|
|
<head>
|
5 : |
|
|
<title>Diderot project</title>
|
6 : |
|
|
<meta name="generator" content="BBEdit 9.5">
|
7 : |
|
|
</head>
|
8 : |
|
|
<body>
|
9 : |
|
|
|
10 : |
|
|
<hr />
|
11 : |
|
|
<h2 align="center">The Diderot Project</h2>
|
12 : |
|
|
<hr />
|
13 : |
|
|
|
14 : |
|
|
<h3>About</h3>
|
15 : |
|
|
<p>
|
16 : |
|
|
The Diderot project is an effort to design and implement a <i>Parallel
|
17 : |
|
|
Domain-specific Language</i> (PDSL) for image analysis and visualization.
|
18 : |
|
|
We are particularly interested in a class of algorithms that are programmed
|
19 : |
|
|
in terms of <em>continuous</em> scalar, vector, and tensor fields that
|
20 : |
jhr |
375 |
are reconstructed from the image data.
|
21 : |
|
|
Our goals are to provide a high-level mathematical programming model for
|
22 : |
|
|
these algorithms, while also providing high-performance implementations
|
23 : |
|
|
on a variety of parallel hardware platforms.
|
24 : |
jhr |
366 |
</p>
|
25 : |
|
|
|
26 : |
jhr |
375 |
<h3>Language overview</h3>
|
27 : |
|
|
<p>
|
28 : |
|
|
The following is an overview of our current preliminary design for Diderot.
|
29 : |
|
|
We are building a compiler for this design and expect that the design will
|
30 : |
|
|
evolve as we get experience with the implementation.
|
31 : |
|
|
Also, the design is conservative, in that it does not provide all of the features that
|
32 : |
|
|
we plan to provide (<i>e.g.</i>, actor-actor interactions).
|
33 : |
|
|
</p>
|
34 : |
|
|
|
35 : |
|
|
<h4>Types</h4>
|
36 : |
|
|
<p>
|
37 : |
|
|
The main type of computational value in Diderot is a <em>tensor</em>, which includes
|
38 : |
|
|
reals (0-order tensors), vectors, and matrices.
|
39 : |
|
|
In addition, Diderot provides booleans, integers, and strings.
|
40 : |
|
|
Diderot also has three <em>abstract</em> types:
|
41 : |
|
|
</p>
|
42 : |
|
|
<dl>
|
43 : |
|
|
<dt>images</dt>
|
44 : |
|
|
<dd>are used to represent the data being analyzed, as well as other array data, such as transfer
|
45 : |
|
|
functions.
|
46 : |
|
|
</dd>
|
47 : |
|
|
<dt>kernels</dt>
|
48 : |
|
|
<dd>are separable convolution kernels</dd>
|
49 : |
|
|
<dt>fields</dt>
|
50 : |
|
|
<dd>are an abstraction of functions from 1D, 2D, or 3D space to some tensor type.
|
51 : |
|
|
A field is defined by convolving an image with a kernel.
|
52 : |
|
|
</dd>
|
53 : |
|
|
</dl>
|
54 : |
|
|
|
55 : |
|
|
<h4>Program structure</h4>
|
56 : |
|
|
<p>A Diderot program is organized into three logical sections:</p>
|
57 : |
|
|
<ol>
|
58 : |
|
|
<li>Global declarations define global values, such as fields, as well as the inputs to the program.</li>
|
59 : |
|
|
<li>Actor definitions define the computational agents that implement the program</li>
|
60 : |
|
|
<li>Initialization defines the initial set of actors and their structure</li>
|
61 : |
|
|
</ol>
|
62 : |
|
|
|
63 : |
|
|
<h4>Actors</h4>
|
64 : |
|
|
<p>
|
65 : |
|
|
An <em>actor</em> represents a mostly autonomous computation with local state, which includes
|
66 : |
|
|
their <em>position</em> in world space.
|
67 : |
|
|
An actor definition consists of declared state variables and methods.
|
68 : |
|
|
All actors must have an <em>update</em> method and may optionally have a <em>stabilize</em>
|
69 : |
|
|
method.
|
70 : |
|
|
</p>
|
71 : |
|
|
|
72 : |
|
|
<h4>Execution model</h4>
|
73 : |
|
|
<p>The Diderot execution model is <em>bulk synchronous</em>.
|
74 : |
|
|
At each iteration, the update methods of all active actors are invoked, resulting in a new
|
75 : |
|
|
configuration.
|
76 : |
|
|
</p>
|
77 : |
|
|
|
78 : |
jhr |
366 |
<h3>People</h3>
|
79 : |
|
|
<ul>
|
80 : |
|
|
<li><a href="http://cs.uchicago.edu/~glk/">Gordon Kindlmann</a></li>
|
81 : |
|
|
<li><a href="http://cs.uchicago.edu/~jhr/">John Reppy</a></li>
|
82 : |
|
|
<li><a href="http://www.cs.uchicago.edu/people/lamonts">Lamont Samuels</a></li>
|
83 : |
|
|
</ul>
|
84 : |
|
|
|
85 : |
|
|
<h3>Status</h3>
|
86 : |
|
|
<p>
|
87 : |
|
|
We have a prototype language design that can handle simple examples, such as volume
|
88 : |
|
|
rendering, and we are working on a baseline compiler for the design.
|
89 : |
|
|
This compiler will generate CUDA or OpenCL code for running on GPUs.
|
90 : |
|
|
</p>
|
91 : |
|
|
|
92 : |
|
|
<hr />
|
93 : |
jhr |
375 |
Last modified: October 4, 2010.
|
94 : |
jhr |
366 |
<hr />
|
95 : |
|
|
|
96 : |
|
|
</body>
|
97 : |
|
|
</html>
|