@article {louboutin2017fwip2,
	title = {Full-Waveform Inversion - Part 2: adjoint modeling},
	journal = {The Leading Edge},
	volume = {37},
	number = {1},
	year = {2018},
	note = {(The Leading Edge)},
	month = {1},
	pages = {69-72},
	abstract = {This tutorial is the second part of a three part tutorial series on full-waveform inversion (FWI), in which we provide a step by step walk through of setting up forward and adjoint wave equation solvers and an optimization framework for inversion. In part 1 (Louboutin et al., 2017), we demonstrated how to discretize the acoustic wave equation and how to set up a basic forward modeling scheme using Devito, a domain-specific language (DSL) in Python for automated finite-difference (FD) computations (Lange et al., 2016). Devito allows us to define wave equations as symbolic Python expressions (Meurer et al., 2017), from which optimized FD stencil code is automatically generated at run time. In part 1, we show how we can use Devito to set up and solve acoustic wave equations with (impulsive) seismic sources and sample wavefields at the receiver locations to model shot records.},
	keywords = {acoustic, devito, finite-difference, FWI, tutorial},
	doi = {10.1190/tle37010069.1},
	url = {https://slim.gatech.edu/Publications/Public/Journals/TheLeadingEdge/2018/louboutin2017fwip2/louboutin2017fwip2.html},
	author = {Mathias Louboutin and Philipp A. Witte and Michael Lange and Navjot Kukreja and Fabio Luporini and Gerard Gorman and Felix J. Herrmann}
}
@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 {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}
}
@conference {louboutin2015SEGtcs,
	title = {Time compressively sampled full-waveform inversion with stochastic optimization},
	booktitle = {SEG Technical Program Expanded Abstracts},
	year = {2015},
	note = {(SEG, New Orleans)},
	month = {10},
	pages = {5153-5157},
	abstract = {Time-domain Full-Waveform Inversion (FWI) aims to image the subsurface of the earth accurately from field recorded data and can be solved via the reduced adjoint-state method. However, this method requires access to the forward and adjoint wavefields that are meet when computing gradient updates. The challenge here is that the adjoint wavefield is computed in reverse order during time stepping and therefore requires storage or other type of mitigation because storing the full time history of the forward wavefield is too expensive in realistic 3D settings. To overcome this challenge, we propose an approximate adjoint-state method where the wavefields are subsampled randomly, which drastically the amount of storage needed. By using techniques from stochastic optimization, we control the errors induced by the subsampling. Examples of the proposed technique on a synthetic but realistic 2D model show that the subsampling-related artifacts can be reduced significantly by changing the sampling for each source after each model update. Combination of this gradient approximation with a quasi-Newton method shows virtually artifact free inversion results requiring only 5\% of storage compared to saving the history at Nyquist. In addition, we avoid having to recompute the wavefields as is required by checkpointing.},
	keywords = {acoustic, Full-waveform inversion, inversion, SEG, Stochastic optimization, Subsampling, Time-domain},
	doi = {10.1190/segam2015-5924937.1},
	url = {https://slim.gatech.edu/Publications/Public/Conferences/SEG/2015/louboutin2015SEGtcs/louboutin2015SEGtcs.html},
	presentation = {https://slim.gatech.edu/Publications/Public/Conferences/SEG/2015/louboutin2015SEGtcs/louboutin2015SEGtcs_poster.pdf},
	author = {Mathias Louboutin and Felix J. Herrmann}
}
