@conference {bisbas2020IPDPStbf,
	title = {Temporal blocking of finite-difference stencil operators with sparse "off-the-grid" sources},
	booktitle = {IEEE International Parallel and Distributed Processing Symposium},
	year = {2021},
	note = {(IPDPS, virtual)},
	month = {5},
	abstract = {Stencil kernels dominate a range of scientific applications including seismic and medical imaging, image processing, and neural networks. Temporal blocking is a performance optimisation that aims to reduce the required memory bandwidth of stencil computations by re-using data from the cache for multiple time steps. It has already been shown to be beneficial for this class of algorithms. However, optimising stencils for practical applications remains challenging. These computations often include sparsely located operators, not aligned with the computational grid ("off-the-grid"). For example, our work is motivated by sources that inject a wavefield and measurements interpolating grid values. The resulting data dependencies make the adoption of temporal blocking much more challenging. We propose a methodology to inspect these data dependencies and reorder the computation, leading to performance gains in stencil codes where temporal blocking has not been applicable. We implement this novel scheme in the Devito domain-specific compiler toolchain. Devito implements a domain-specific language embedded in Python to generate optimised partial differential equation solvers using the finite-difference method from high-level symbolic problem definitions. We evaluate our scheme using isotropic acoustic, anisotropic acoustic and isotropic elastic wave propagators of industrial significance. Performance evaluation, after auto-tuning, shows that this enables substantial performance improvement through temporal blocking, over highly-optimised vectorized spatially-blocked code of up to 1.6x.},
	keywords = {finite-difference, HPC, performance, wave-equation},
	doi = {10.1109/IPDPS49936.2021.00058},
	url = {https://arxiv.org/pdf/2010.10248.pdf},
	author = {George Bisbas and Fabio Luporini and Mathias Louboutin and Rhodri Nelson and Gerard Gorman and Paul H. J. Kelly}
}
@techreport {louboutin2020SCsta,
	title = {Scaling through abstractions {\textendash} high-performance vectorial wave simulations for seismic inversion with Devito},
	number = {TR-CSE-2020-3},
	year = {2020},
	month = {4},
	institution = {Georgia Institute of Technology},
	abstract = {[Devito] is an open-source Python project based on domain-specific language and compiler technology. Driven by the requirements of rapid HPC applications development in exploration seismology, the language and compiler have evolved significantly since inception. Sophisticated boundary conditions, tensor contractions, sparse operations and features such as staggered grids and sub-domains are all supported; operators of essentially arbitrary complexity can be generated. To accommodate this flexibility whilst ensuring performance, data dependency analysis is utilized to schedule loops and detect computational-properties such as parallelism. In this article, the generation and simulation of MPI-parallel propagators (along with their adjoints) for the pseudo-acoustic wave-equation in tilted transverse isotropic media and the elastic wave-equation are presented. Simulations are carried out on industry scale synthetic models in a HPC Cloud system and reach a performance of 28TFLOP/s, hence demonstrating Devito{\textquoteright}s suitability for production-grade seismic inversion problems.},
	keywords = {devito, elastic, finite-difference, HPC, large-scale, RTM, TTI},
	url = {https://slim.gatech.edu/Publications/Public/TechReport/2020/louboutin2020SCsta/louboutin2020SCsta.html},
	author = {Mathias Louboutin and Fabio Luporini and Philipp A. Witte and Rhodri Nelson and George Bisbas and Jan Thorbecke and Felix J. Herrmann and Gerard Gorman}
}
@conference {herrmann2019EAGEHPCaii,
	title = {Accelerating ideation and innovation cheaply in the Cloud the power of abstraction, collaboration and reproducibility},
	booktitle = {4th EAGE Workshop on High-performance Computing},
	year = {2019},
	note = {(EAGE HPC Workshop, Dubai)},
	month = {10},
	keywords = {cloud, devito, EAGE, HPC, JUDI},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/EAGEHPC/2019/herrmann2019EAGEHPCaii/herrmann2019EAGEHPCaii_pres.pdf},
	author = {Felix J. Herrmann and Charles Jones and Gerard Gorman and Jan H{\"u}ckelheim and Keegan Lensink and Paul H. J. Kelly and Navjot Kukreja and Henryk Modzelewski and Michael Lange and Mathias Louboutin and Fabio Luporini and James Selvages and Philipp A. Witte}
}
@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 {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}
}
@conference {louboutin2017SIAMras,
	title = {Raising the abstraction to separate concerns: enabling different physics for geophysical exploration},
	booktitle = {SIAM Conference on Computational Science and Engineering},
	year = {2017},
	note = {(SIAM Conference on Computational Science and Engineering, Atlanta)},
	month = {02-03},
	abstract = {Full-waveform inversion is a PDE-constrained optimisation problem involving massive amounts of data (petabytes) and large numbers of unknowns (O(10^9)). This well known compute-intensive and data-intensive is extremely challenging for several reasons. First, there is the complexity of having to handle extremely large data volumes with metadata related to experimental details in the field, and the discretization of the unknown earth parameters and approximate physics. Second, reduced or adjoint-state methods call for computationally intensive PDE solves for each source experiment (of which there are thousands) for each iteration of a gradient-based optimization scheme. The talks will give an overview how carefully chosen layers of abstraction can help manage both the complexity and scale of inversion while still achieving the high degree of computational performance required to make full-waveform a practical tool. Specifically, the presentations will focus on domain specific stencil language for time-stepping methods to solve various types of wave equations and on abstracts for large-scale parallel optimization frameworks.},
	keywords = {finite differences, HPC, Modelling, SIAM, time domain},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SIAM/2017/louboutin2017SIAMras/louboutin2017SIAMras_pres.mov},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/SIAM/2017/louboutin2017SIAMras/louboutin2017SIAMras_pres.pdf},
	author = {Mathias Louboutin and Michael Lange and Navjot Kukreja and Fabio Luporini and Felix J. Herrmann and Gerard Gorman}
}
@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}
}
