Home My Page Projects Code Snippets Project Openings diderot

# SCM Repository

[diderot] Annotation of /trunk/doc/report/intro.tex
 [diderot] / trunk / doc / report / intro.tex

# Annotation of /trunk/doc/report/intro.tex

 1 : jhr 97 %!TEX root = report.tex 2 : % 3 : 4 : \chapter{Introduction} 5 : jhr 100 6 : jhr 2636 Diderot is a parallel domain-specific language for programming image analysis and 7 : visualization algorithms. 8 : jhr 100 It supports a high-level programming model based on the mathematics of continuous 9 : jhr 2636 tensor fields. 10 : These fields are reconstructed from discrete image-data sets (\eg{}, MRI data) using 11 : separable convolution kernels. 12 : We use \emph{tensors} to refer collectively to scalars, 13 : vectors, and matrices, which encompasses the types of values produced 14 : by the imaging modalities mentioned above, as well as values produced 15 : by taking spatial derivatives of images. 16 : Diderot permits programmers to express algorithms directly in terms of 17 : tensors, tensor fields, and tensor field operations, using the same 18 : mathematical notation that would be used in vector and tensor calculus 19 : (such as $\nabla$ for the gradient). 20 : Diderot is indended to be useful for prototyping image 21 : analysis and visualization methods in contexts where a meaningful 22 : evaluation of the methods requires its application to real image data, 23 : but the real data volumes are of a size that requires efficient 24 : parallel computation. 25 : Diderot is also suited for educational contexts where the conceptual 26 : transparency of the implementation is of primary importance. 27 : In addition to providing a high-level mathematical programming model, 28 : Diderot is also designed to be implemented on a range of parallel hardware, 29 : including shared-memory multiprocessors and GPUs. 30 : jhr 100 31 : \section{Basic concepts} 32 : The design of Diderot is based on three core concepts: image data, the continuous fields 33 : jhr 1116 that are reconstructed from them, and the strands that represent the computations over 34 : jhr 100 the fields. 35 : We give a high-level overview of these in this section. 36 : 37 : \subsection{Images} 38 : 39 : \subsection{Fields} 40 : jhr 2636 Computing with continuous tensor fields is one of the unique characteristics of Diderot. 41 : Field values are constructed by convolving image data with 42 : kernels (\CD{img${\color{\kwColor}\circledast}$bspln3}), but they can also be defined 43 : by using higher-order operations, such as addition, subtraction, and scaling of fields. 44 : Most importantly, Diderot supports differentiation of fields using the operators $\nabla$ 45 : (for scalar fields) and $\nabla\otimes$ (for higher-order tensor fields). 46 : Two operations on fields are testing whether a point \CD{x} lies within the domain 47 : of a field \CD{F} (\CD{inside(x, F)}) and \emph{probing} a field \CD{F} at a point \CD{x} 48 : (\CD{F(x)}). 49 : Probing and differentiating are fundamental to extracting geometric 50 : information from fields. 51 : jhr 100 52 : jhr 2636 \subsection{Strands} 53 : The class of applications that Diderot targets are characterized as consisting of many 54 : largely independent subcomputations. 55 : For example, the rays in a volume renderer, the paths from fiber tractography, and 56 : the particles in a particle system. 57 : In Diderot, these mostly independent computations are modeled as \emph{strands}, which 58 : execute in a \emph{bulk synchronous} 59 : fashion~\cite{valiant:bridging-model-for-parallel,q-n-a-about-bsp}. 60 : jhr 100 61 : 62 : \section{Diderot by example} 63 : jhr 335 % include VR-lite example here 64 : \begin{figure}[p] 65 : \begin{quote} 66 : jhr 2636 \lstset{language=Diderot} 67 : jhr 335 \input{vr-lite} 68 : \end{quote}% 69 : \caption{A simple volume renderer in Diderot} 70 : \label{fig:vr-lite} 71 : \end{figure}%