postdoc, university of chicago
I work on the design/implementation/testing of a math based programming language (for vis).
My work involves the implementation of the mathematical expressiveness in the Diderot programming language. Diderot is a domain-specific language for scientific visualization and image analysis. The datasets are produced by digital imaging technologies that sample physical objects at discrete points. Algorithms in this domain are used to visually explore the data and compute features and properties. Diderot is designed to enable the translation of visualization ideas into code by providing a mathematically familiar syntax and high-level language. The work in this dissertation enables a high-level of programmability by designing and implementing our intermediate representation and addressing the technical challenges that arise. We evaluate the correctness of our implementation with two complimenting parts; formalizing the properties in our rewrite system and automated testing of our implementation. Lastly, we take the first step to extend the language to another domain. As a result, the Diderot user can write intuitive code, compile programs with complicated tensor math, and believe in the correctness of the compiler. It is important and challenging work to improve the expressivity of the language. We rely on the expressivity of the Diderot language to support the implementation of visualization ideas. With a richer language we can push the boundaries for the type of programs written with the Diderot language.
Abstract: The Normalization transformation plays a key role in the compilation of Diderot programs. The transformations are complicated and it would be easy for a bug to go undetected. To increase our confidence in normalization part of the compiler we provide a formal analysis on the rewriting system. We proof that the rewrite system is type preserving, value preserving (for tensor-valued expressions), and terminating.
Pub.: 24 May '17, Pinned: 28 Jun '17
Abstract: Many algorithms for scientific visualization and image analysis are rooted in the world of continuous scalar, vector, and tensor fields, but are programmed in low-level languages and libraries that obscure their mathematical foundations. Diderot is a parallel domain-specific language that is designed to bridge this semantic gap by providing the programmer with a high-level, mathematical programming notation that allows direct expression of mathematical concepts in code. Furthermore, Diderot provides parallel performance that takes advantage of modern multicore processors and GPUs. The high-level notation allows a concise and natural expression of the algorithms and the parallelism allows efficient execution on real-world datasets.
Pub.: 04 Nov '15, Pinned: 28 Jun '17
Abstract: The scientific community use PDEs to model a range of problems. The people in this domain are interested in visualizing their results, but existing mechanisms for visualization can not handle the full richness of computations in the domain. We did an exploration to see how Diderot, a domain specific language for scientific visualization and image analysis, could be used to solve this problem. We demonstrate our first and modest approach of visualizing FE data with Diderot and provide examples. Using Diderot, we do a simple sampling and a volume rendering of a FE field. These examples showcase Diderot's ability to provide a visualization result for Firedrake. This paper describes the extension of the Diderot language to include FE data.
Pub.: 18 Jun '17, Pinned: 28 Jun '17