@article {witte2018alf,
	title = {A large-scale framework for symbolic implementations of seismic inversion algorithms in Julia},
	journal = {Geophysics},
	volume = {84},
	number = {3},
	year = {2019},
	note = {(Geophysics)},
	month = {03},
	pages = {F57-F71},
	abstract = {Writing software packages for seismic inversion is a very challenging task, since problems such as full-waveform inversion or least-squares imaging are both algorithmically and computationally demanding due to the large number of unknown parameters and the fact that we are propagating waves over many wavelengths. Software frameworks therefore need to combine both versatility and performance to provide geophysicists with the means and flexibility to implement complex algorithms that scale to exceedingly large 3D problems. Following these principles, we introduce the Julia Devito Inversion framework, an open-source software package in Julia for large-scale seismic modeling and inversion based on Devito, a domain-specific language compiler for automatic code generation. The framework consists of matrix-free linear operators for implementing seismic inversion algorithms that closely resembles the mathematical notation, a flexible resilient parallelization and an interface to Devito for generating optimized stencil code to solve the underlying wave equations. In comparison to many manually optimized industry codes written in low-level languages, our software is built on the idea of independent layers of abstractions and user interfaces with symbolic operators, making it possible to manage both the complexity of algorithms and performance optimizations, while preserving modularity, which allows for a level of expressiveness needed to formulate a broad range of wave-equation-based inversion problems. Through a series of numerical examples, we demonstrate that this allows users to implement algorithms for waveform inversion and imaging as simple Julia scripts that scale to large-scale 3D problems; thus providing a truly performant research and production framework.},
	keywords = {FWI, inversion, LSRTM, Modeling, software},
	doi = {10.1190/geo2018-0174.1},
	url = {https://slim.gatech.edu/Publications/Public/Journals/Geophysics/2019/witte2018alf/witte2018alf.pdf},
	author = {Philipp A. Witte and Mathias Louboutin and Navjot Kukreja and Fabio Luporini and Michael Lange and Gerard J. Gorman and Felix J. Herrmann}
}
@presentation {louboutin2017SINBADFldi,
	title = {Latest developments in Devito},
	year = {2017},
	publisher = {SINBAD},
	abstract = {We present an overview of the latest developments in Devito. We introduced Devito in the previous meeting as a prototype finite-difference DSL for seismic modelling and inversion. We are presenting here the latest improvements and functionalities of Devito. We will also discuss the current future plans as well as non-supported features that the audience may be interested in. This presentation will be followed by/mixed with a hands-in tutorial if the time and resources allows it.},
	keywords = {Presentation, SINBAD, SINBADFALL2017, SLIM},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SINBAD/2017/Fall/louboutin2017SINBADFldi/louboutin2017SINBADFldi.pdf},
	url2 = {https://slim.gatech.edu/Publications/Public/Conferences/SINBAD/2017/Fall/louboutin2017SINBADFldi/louboutin2017SINBADFldi.mov},
	author = {Mathias Louboutin and Michael Lange and Fabio Luporini and Navjot Kurjeka and Jan Hueckelheim and Gerard Gorman and Philipp A. Witte and Felix J. Herrmann}
}
@conference {kukreja2016OGHPClsm,
	title = {Leveraging symbolic math for rapid development of applications for seismic modeling},
	booktitle = {OGHPC},
	year = {2017},
	note = {(Oil and Gas HPC Conference, Rice University)},
	month = {03},
	abstract = {Wave propagation kernels are the core of many commonly used algorithms for inverse problems in exploration geophysics. While they are easy to write and analyze for the simplied cases, the code quickly becomes complex when the physics needs to be made more precise or the performance of these codes is to be optimized. Signicant eort is repeated every time new forms of physics need to be implemented, or a new computing platform to be supported. The use of symbolic mathematics as a domain specic language (DSL) for input, combined with automatic generation of high performance code customized for the target hardware platform is a promising approach to maximize code reuse. Devito is a DSL for nite dierence that uses symbolic mathematics to generate optimized code for wave propagation based on a provided wave equation. It enables rapid application development in a eld where the average time spent on development has historically been in weeks and months. The Devito DSL system is completely wrapped within the Python programming language and the fact that the running code is in C is completely transparent, making it simple to include Devito as part of a larger work ow including multiple applications over a large cluster.},
	keywords = {finite differences, HPC, Modelling, OGHPC, time domain},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/OGHPC/2017/kukreja2016OGHPClsm/kukreja2016OGHPClsm.pdf},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/OGHPC/2017/kukreja2016OGHPClsm/kukreja2016OGHPClsm_pres.pdf},
	author = {Navjot Kukreja and Mathias Louboutin and Michael Lange and Fabio Luporini and Gerard Gorman}
}
