Litcius/Paper detail

Architecture and Performance of Devito, a System for Automated Stencil Computation

Fabio Luporini, Mathias Louboutin, Michael Lange, Navjot Kukreja, Philipp Witte, Jan Hückelheim, Charles Yount, Paul H. J. Kelly, Felix J. Herrmann, Gerard Gorman

2020ACM Transactions on Mathematical Software45 citationsDOIOpen Access PDF

Abstract

Stencil computations are a key part of many high-performance computing applications, such as image processing, convolutional neural networks, and finite-difference solvers for partial differential equations. Devito is a framework capable of generating highly optimized code given symbolic equations expressed in Python , specialized in, but not limited to, affine (stencil) codes. The lowering process—from mathematical equations down to C++ code—is performed by the Devito compiler through a series of intermediate representations. Several performance optimizations are introduced, including advanced common sub-expressions elimination, tiling, and parallelization. Some of these are obtained through well-established stencil optimizers, integrated in the backend of the Devito compiler. The architecture of the Devito compiler, as well as the performance optimizations that are applied when generating code, are presented. The effectiveness of such performance optimizations is demonstrated using operators drawn from seismic imaging applications.

Topics & Concepts

StencilCompilerComputer scienceParallel computingComputationPython (programming language)Affine transformationCode (set theory)Computational scienceAlgorithmProgramming languageMathematicsSet (abstract data type)Pure mathematicsSeismic Imaging and Inversion TechniquesReservoir Engineering and Simulation MethodsComputational Physics and Python Applications
Architecture and Performance of Devito, a System for Automated Stencil Computation | Litcius