Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /web/htdocs/index.html
ViewVC logotype

Annotation of /web/htdocs/index.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 376 - (view) (download) (as text)

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 376 <h3>People</h3>
27 :     <ul>
28 :     <li><a href="http://cs.uchicago.edu/~glk/">Gordon Kindlmann</a></li>
29 :     <li><a href="http://cs.uchicago.edu/~jhr/">John Reppy</a></li>
30 :     <li><a href="http://www.cs.uchicago.edu/people/lamonts">Lamont Samuels</a></li>
31 :     </ul>
32 :    
33 : jhr 375 <h3>Language overview</h3>
34 :     <p>
35 :     The following is an overview of our current preliminary design for Diderot.
36 :     We are building a compiler for this design and expect that the design will
37 :     evolve as we get experience with the implementation.
38 :     Also, the design is conservative, in that it does not provide all of the features that
39 :     we plan to provide (<i>e.g.</i>, actor-actor interactions).
40 :     </p>
41 :    
42 :     <h4>Types</h4>
43 :     <p>
44 :     The main type of computational value in Diderot is a <em>tensor</em>, which includes
45 :     reals (0-order tensors), vectors, and matrices.
46 :     In addition, Diderot provides booleans, integers, and strings.
47 :     Diderot also has three <em>abstract</em> types:
48 :     </p>
49 :     <dl>
50 :     <dt>images</dt>
51 :     <dd>are used to represent the data being analyzed, as well as other array data, such as transfer
52 :     functions.
53 :     </dd>
54 :     <dt>kernels</dt>
55 :     <dd>are separable convolution kernels</dd>
56 :     <dt>fields</dt>
57 :     <dd>are an abstraction of functions from 1D, 2D, or 3D space to some tensor type.
58 :     A field is defined by convolving an image with a kernel.
59 :     </dd>
60 :     </dl>
61 :    
62 :     <h4>Program structure</h4>
63 :     <p>A Diderot program is organized into three logical sections:</p>
64 :     <ol>
65 :     <li>Global declarations define global values, such as fields, as well as the inputs to the program.</li>
66 :     <li>Actor definitions define the computational agents that implement the program</li>
67 :     <li>Initialization defines the initial set of actors and their structure</li>
68 :     </ol>
69 :    
70 :     <h4>Actors</h4>
71 :     <p>
72 :     An <em>actor</em> represents a mostly autonomous computation with local state, which includes
73 :     their <em>position</em> in world space.
74 :     An actor definition consists of declared state variables and methods.
75 :     All actors must have an <em>update</em> method and may optionally have a <em>stabilize</em>
76 :     method.
77 :     </p>
78 :    
79 :     <h4>Execution model</h4>
80 :     <p>The Diderot execution model is <em>bulk synchronous</em>.
81 :     At each iteration, the update methods of all active actors are invoked, resulting in a new
82 :     configuration.
83 :     </p>
84 :    
85 : jhr 366 <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 : jhr 376 <h3>Further information</h3>
93 :     <p>
94 :     We have not published any papers on Diderot yet, but here are some unpublished documents that provide
95 :     additional details about the project.
96 :     </p>
97 :     <ul>
98 :     <li><a href="papers/msrc-talk-20100906.pdf"><em>Diderot: A parallel domain-specific language for image analysis</em></a>, talk
99 :     given at Microsoft Research --- Cambridge, September 6, 2010.
100 :     </li>
101 :     </ul>
102 :    
103 : jhr 366 <hr />
104 : jhr 375 Last modified: October 4, 2010.
105 : jhr 366 <hr />
106 :    
107 :     </body>
108 :     </html>

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0