@article {louboutin2018dae,
	title = {Devito (v3.1.0): an embedded domain-specific language for finite differences and geophysical exploration},
	journal = {Geoscientific Model Development},
	year = {2019},
	note = {(Geoscientific Model Development)},
	abstract = {We introduce Devito, a new domain-specific language for implementing high-performance finite difference partial differential equation solvers. The motivating application is exploration seismology where methods such as Full-Waveform Inversion and Reverse-Time Migration are used to invert terabytes of seismic data to create images of the earth{\textquoteright}s subsurface. Even using modern supercomputers, it can take weeks to process a single seismic survey and create a useful subsurface image. The computational cost is dominated by the numerical solution of wave equations and their corresponding adjoints. Therefore, a great deal of effort is invested in aggressively optimizing the performance of these wave-equation propagators for different computer architectures. Additionally, the actual set of partial differential equations being solved and their numerical discretization is under constant innovation as increasingly realistic representations of the physics are developed, further ratcheting up the cost of practical solvers. By embedding a domain-specific language within Python and making heavy use of SymPy, a symbolic mathematics library, we make it possible to develop finite difference simulators quickly using a syntax that strongly resembles the mathematics. The Devito compiler reads this code and applies a wide range of analysis to generate highly optimized and parallel code. This approach can reduce the development time of a verified and optimized solver from months to days.},
	keywords = {finite-differences, HPC, Modeling, wave-equation},
	doi = {10.5194/gmd-12-1165-2019},
	url = {https://slim.gatech.edu/Publications/Public/Journals/GMD/2019/louboutin2018dae/louboutin2018dae.pdf},
	author = {Mathias Louboutin and Michael Lange and Fabio Luporini and Navjot Kukreja and Philipp A. Witte and Felix J. Herrmann and Paulius Velesko and Gerard J. Gorman}
}
@conference {kukreja2017SIAMdsm,
	title = {Devito: symbolic math for automated fast finite difference computations},
	booktitle = {SIAM Conference on Computational Science and Engineering},
	year = {2017},
	note = {(SIAM Conference on Computational Science and Engineering, Atlanta)},
	month = {02-03},
	keywords = {acoustic, compiler, devito, finite differences, high performance computing, Modelling, SIAM, stencil},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SIAM/2017/kukreja2017SIAMdsm/kukreja2017SIAMdsm_pres.mov},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/SIAM/2017/kukreja2017SIAMdsm/kukreja2017SIAMdsm_pres.pdf},
	author = {Navjot Kukreja and Michael Lange and Mathias Louboutin and Fabio Luporini and Gerard Gorman}
}
@conference {kukreja2016WOLFHPCdaf,
	title = {Devito: automated fast finite difference computation},
	booktitle = {WOLFHPC 2016 Workshop (Super Computing)},
	year = {2016},
	note = {(WOLFHPC Workshop (SC16), Utah)},
	month = {11},
	abstract = {Domain specific languages have successfully been used in a variety of fields to cleanly express scientific problems as well as to simplify implementation and performance optimization on different computer architectures. Although a large number of stencil languages are available, finite difference domain specific languages have proved challenging to design because most practical use cases require additional features that fall outside the finite difference abstraction. Inspired by the complexity of real-world seismic imaging problems, we introduce Devito, a domain specific language in which high level equations are expressed using symbolic expressions from the SymPy package. Complex equations are automatically manipulated, optimized, and translated into highly optimized C code that aims to perform comparably or better than hand-tuned code. All this is transparent to users, who only see concise symbolic mathematical expressions.},
	keywords = {acoustic, compiler, finite differences, high performance computing, Modelling, stencil},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SC/2016/WOLFHPC/kukreja2016WOLFHPCdaf/kukreja2016WOLFHPCdaf.pdf},
	url2 = {https://slim.gatech.edu/Publications/Public/Conferences/SC/2016/WOLFHPC/kukreja2016WOLFHPCdaf/kukreja2016WOLFHPCdaf_pres.pdf},
	author = {Navjot Kukreja and Mathias Louboutin and Felippe Vieira Zacarias and Fabio Luporini and Michael Lange and Gerard Gorman}
}
@conference {deaguiar2016SCdff,
	title = {DeVito: fast finite difference computation},
	booktitle = {Super Computing (SC16)},
	year = {2016},
	note = {(Super Computing, Utah)},
	month = {11},
	abstract = {Seismic imaging, used in energy exploration, is arguably the most compute and data intensive application in the private sector. The commonly used methods involve solving the wave equations numerically using finite difference formulations. Writing optimized code for these applications involves multiple man-years of effort that need to be repeated every time a new development needs to be factored in {\textendash} for every target platform. DeVito is a new tool for performing optimized Finite Difference (FD) computation from high-level symbolic problem definitions. The application developer needs to provide a differential equation in symbolic form. DeVito performs automated code generation and Just-In-Time (JIT) compilation based on this symbolic equation to create and execute highly optimized Finite Difference kernels on multiple computer platforms. DeVito has been designed to be used as part of complex workflows involving data flows across multiple applications over different nodes of a cluster.},
	keywords = {finite differences, Full-waveform inversion, high performance computing},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SC/2016/deaguiar2016SCdff/deaguiar2016SCdff_poster.pdf},
	url2 = {http://sc16.supercomputing.org/sc-archive/tech_poster/tech_poster_pages/post155.html},
	author = {Marcos de Aguiar and Gerard Gorman and Felix J. Herrmann and Navjot Kukreja and Michael Lange and Mathias Louboutin and Felippe Vieira Zacarias}
}
@conference {lange2016dtg,
	title = {Devito: Towards a generic finite difference DSL using symbolic python},
	booktitle = {6th Workshop on Python for High-Performance and Scientific Computing},
	year = {2016},
	note = {(PyHPC, Utah)},
	month = {11},
	pages = {67-75},
	abstract = {Domain specific languages (DSL) have been used in a variety of fields to express complex scientific problems in a concise manner and provide automated performance optimization for a range of computational architectures. As such DSLs provide a powerful mechanism to speed up scientific Python computation that goes beyond traditional vectorization and pre-compilation approaches, while allowing domain scientists to build applications within the comforts of the Python software ecosystem. In this paper we present Devito, a new finite difference DSL that provides optimized stencil computation from high-level problem specifications based on symbolic Python expressions. We demonstrate Devito{\textquoteright}s symbolic API and performance advantages over traditional Python acceleration methods before highlighting its use in the scientific context of seismic inversion problems.},
	keywords = {acoustic, finite differences, HPC, inversion, Modelling, python, software optimization},
	doi = {10.1109/PyHPC.2016.9},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/PyHPC/2016/lange2016dtg/lange2016dtg.pdf},
	url2 = {https://slim.gatech.edu/Publications/Public/Conferences/PyHPC/2016/lange2016dtg/lange2016dtg_pres.pdf},
	author = {Michael Lange and Navjot Kukreja and Mathias Louboutin and Fabio Luporini and Felippe Vieira Zacarias and Vincenzo Pandolfo and Paulius Velesko and Paulius Kazakas and Gerard Gorman}
}
