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

SCM Repository

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

View of /web/htdocs/index.html

Parent Directory Parent Directory | Revision Log Revision Log

Revision 375 - (download) (as text) (annotate)
Mon Oct 4 12:45:40 2010 UTC (11 years, 8 months ago) by jhr
File size: 3327 byte(s)
  Working on web pages
	<title>Diderot project</title>
	<meta name="generator" content="BBEdit 9.5">

<hr />
<h2 align="center">The Diderot Project</h2>
<hr />

The Diderot project is an effort to design and implement a <i>Parallel
Domain-specific Language</i> (PDSL) for image analysis and visualization.
We are particularly interested in a class of algorithms that are programmed
in terms of <em>continuous</em> scalar, vector, and tensor fields that
are reconstructed from the image data.
Our goals are to provide a high-level mathematical programming model for
these algorithms, while also providing high-performance implementations
on a variety of parallel hardware platforms.

<h3>Language overview</h3>
The following is an overview of our current preliminary design for Diderot.
We are building a compiler for this design and expect that the design will
evolve as we get experience with the implementation.
Also, the design is conservative, in that it does not provide all of the features that
we plan to provide (<i>e.g.</i>, actor-actor interactions).

The main type of computational value in Diderot is a <em>tensor</em>, which includes
reals (0-order tensors), vectors, and matrices.
In addition, Diderot provides booleans, integers, and strings.
Diderot also has three <em>abstract</em> types:
    <dd>are used to represent the data being analyzed, as well as other array data, such as transfer
    <dd>are separable convolution kernels</dd>
    <dd>are an abstraction of functions from 1D, 2D, or 3D space to some tensor type.
    A field is defined by convolving an image with a kernel.

<h4>Program structure</h4>
<p>A Diderot program is organized into three logical sections:</p>
  <li>Global declarations define global values, such as fields, as well as the inputs to the program.</li>
  <li>Actor definitions define the computational agents that implement the program</li>
  <li>Initialization defines the initial set of actors and their structure</li>

An <em>actor</em> represents a mostly autonomous computation with local state, which includes
their <em>position</em> in world space.
An actor definition consists of declared state variables and methods.
All actors must have an <em>update</em> method and may optionally have a <em>stabilize</em>

<h4>Execution model</h4>
<p>The Diderot execution model is <em>bulk synchronous</em>.
At each iteration, the update methods of all active actors are invoked, resulting in a new

  <li><a href="http://cs.uchicago.edu/~glk/">Gordon Kindlmann</a></li>
  <li><a href="http://cs.uchicago.edu/~jhr/">John Reppy</a></li>
  <li><a href="http://www.cs.uchicago.edu/people/lamonts">Lamont Samuels</a></li>

We have a prototype language design that can handle simple examples, such as volume
rendering, and we are working on a baseline compiler for the design.
This compiler will generate CUDA or OpenCL code for running on GPUs.

<hr />
Last modified: October 4, 2010.
<hr />


ViewVC Help
Powered by ViewVC 1.0.0