The analysis of structure in three-dimensional images is increasingly valuable for biomedical research and computational science. At the same time, the computational burden of processing images is increasing as devices produce images of higher resolution (e.g., typical CT scans have gone from 128^3 to roughly 512^3 resolutions). With the latest scanning technologies, it is also more common for the values measured at each sample to be multi-dimensional rather than a single scalar, which further complicates implementing mathematically correct methods.
Diderot is a domain-specific language (DSL) for programming advanced 3D image visualization and analysis algorithms. These algorithms, such as volume rendering, fiber tractography, and particle systems, are naturally defined as computations over continuous tensor fields that are reconstructed from the discrete image data. Diderot combines a high-level mathematical programming notation based on tensor calculus with an abstract bulk-synchronous parallelism model. Diderot is designed to both enable rapid prototyping of new image analysis algorithms and high performance on a range of parallel platforms.
In this talk, I will give an overview of the design of Diderot and examples of its use. I will then describe aspects of its implementation with a focus on how we translate the notation of tensor calculus to efficient code. I will also briefly discuss the automated techniques we use to validate the correctness of the compilation process.
Diderot is joint work with Gordon Kindlmann, Charisee Chiw, Teo Collin, Adrian Lehmann, Lamont Samuels, and Nick Seltzer.
John Reppy is a Professor of Computer Science at the University of Chicago. He received his Ph.D. from Cornell University in 1992 and spent the first eleven years of his career at Bell Labs in Murray Hill NJ. He has been exploring issues in language design and implementation since the late 1980s, with a focus on higher-order, typed, functional languages. His work includes the invention of Concurrent ML, work on combining object-oriented and functional language features, and more recently work on high-level languages for parallel programming.
In-person colloquia this Fall will also be streamed on Zoom. Interested parties may contact us for Zoom url. Attendance of those enrolled in CS:6000 will be taken in-person for in-person talks.