# SCM Repository

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

Parent Directory | Revision Log

Revision **2636** -
(**view**)
(**download**)
(**as text**)

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}% |

root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |

Powered by ViewVC 1.0.0 |