We describe Devito, an open-source embedded domain specific language (DSL) in Python for developing parallel and highly optimized finite difference solvers - primarily targeting seismic imaging applications such as reverse-time migration (RTM) and full-waveform inversion (FWI). The two key novel aspects of this technology that distinguish it from existing frameworks is the use of a symbolic mathematics engine, SymPy, to enable geophysicists to quickly and easily implement new methods that are easily verifiable, and the use of compiler techniques to transform the high-level implementation into highly optimized and parallel C code on the fly. A key benefit of taking this embedded DSL compiler technology approach is that it also provides a robust strategy for application code performance portability. We demonstrate the generation and automated execution of highly optimized stencil code for standard operators such as forward, adjoint and gradient operators from only a few lines of Python and SymPy. We also demonstrate how Devito can be integrated with Dask to implement highly scalable RTM on Cloud and Supercomputing platforms.


Article metrics loading...

Loading full text...

Full text loading...

This is a required field
Please enter a valid email address
Approval was a Success
Invalid data
An Error Occurred
Approval was partially successful, following selected items could not be processed due to error