2018/02/19 by Charisee Chiw, Gordon L. Kindlmann, Chiw, Charisee +4
Computer Science · Mathematics · Social Sciences · #FOS: Computer and information sciences #Historical and Literary Studies #History and Theory of Mathematics #Mathematical Software (cs.MS) #Mathematics Education and Teaching Techniques #Programming Languages (cs.PL) #cs.MS #cs.PL
paper · pdf · doi:10.48550/arxiv.1802.06504
arxiv created 2018/02/19 · openalex publication_date 2018/02/19 · arxiv updated 2018/02/20 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28
Diderot is a parallel domain-specific language for analysis and visualization of multidimensional scientific images, such as those produced by CT and MRI scanners. In particular, it supports algorithms where tensor fields (i.e., functions from 3D points to tensor values) are used to represent the underlying physical objects that were scanned by the imaging device. Diderot supports higher-order programming where tensor fields are first-class values and where differential operators and lifted linear-algebra operators can be used to express mathematical reasoning directly in the language. While such lifted field operations are central to the definition and computation of many scientific visualization algorithms, to date they have required extensive manual derivations and laborious implementation. The challenge for the Diderot compiler is to effectively translate the high-level mathematical concepts that are expressible in the surface language to a low-level and efficient implementation in C. This paper describes our approach to this challenge, which is based around the careful design of an intermediate representation (IR), called EIN, and a number of compiler transformations that lower the program from tensor calculus to C while avoiding combinatorial explosion in the size of the IR. We describe the challenges in compiling a language like Diderot, the design of EIN, and the transformation used by the compiler. We also present an evaluation of EIN with respect to both compiler efficiency and quality of generated code.