\n",
"\n",
"Figure 1: 3D TTI imaging on a custom overthrust-salt model (Witte et al.\n",
"2020). This image was computed using Devito and high-level abstraction\n",
"for Cloud Computing. Images courtesy of [SLIM @\n",
"GeorgiaTech](https://slim.gatech.edu).\n",
"\n",
"Devito is a Python package to implement optimized stencil computation\n",
"(e.g., finite differences, image processing, machine learning) from\n",
"high-level symbolic problem definitions. Devito builds on\n",
"[SymPy](https://www.sympy.org) and employs automated code generation and\n",
"just-in-time compilation to execute optimized computational kernels on\n",
"several computer platforms, including CPUs, GPUs, and clusters thereof.\n",
"\n",
"Symbolic computation is a powerful tool that allows users to:\n",
"\n",
"- Build complex solvers from only a few lines of high-level code\n",
"- Use automated performance optimisation for generated code\n",
"- Adjust stencil discretisation at runtime as required\n",
"- (Re-)development of solver code in hours/days rather than months\n",
"\n",
"Devito is primarily designed to create wave propagation kernels for use\n",
"in seismic inversion problems. A tutorial for the generation of a\n",
"modelling operator using an acoustic wave equation can be found\n",
"[here](examples/seismic/tutorials/01_modelling.html). A paper outlining\n",
"the symbolic API and the verification procedures of the acoustic\n",
"operator can be found\n",
"[here](https://www.geosci-model-dev.net/12/1165/2019/) (Louboutin et al.\n",
"2019) and the internals of the compiler are described in [this\n",
"paper](https://doi.org/10.1145/3374916) (Luporini et al. 2020).\n",
"\n",
"### Key Features\n",
"\n",
"- A functional language to express finite difference operators.\n",
"- Straightforward mechanisms to adjust the discretization.\n",
"- Constructs to express sparse operators (e.g., interpolation),\n",
" classic linear operators (e.g., convolutions), and tensor\n",
" contractions.\n",
"- Seamless support for boundary conditions and adjoint operators.\n",
"- A flexible API to define custom stencils, sub-domains, sub-sampling,\n",
" and staggered grids.\n",
"- Generation of highly optimized parallel code (SIMD vectorization,\n",
" CPU and GPU parallelism via OpenMP and OpenACC, multi-node\n",
" parallelism via MPI, blocking, aggressive symbolic transformations\n",
" for FLOP reduction, etc.).\n",
"- Distributed NumPy arrays over multi-node (MPI) domain\n",
" decompositions.\n",
"- Inspection and customization of the generated code.\n",
"- Autotuning framework to ease performance tuning.\n",
"- Smooth integration with popular Python packages such as NumPy,\n",
" SymPy, Dask, and SciPy, as well as machine learning frameworks such\n",
" as TensorFlow and PyTorch.\n",
"\n",
"You can find below an introductory tutorial to Devito.\n",
"\n",
"\n",
"\n",
"### (Disclosed) Software using Devito\n",
"\n",
"- [COFII](https://github.com/ChevronETC) -\n",
" [Chevron](https://www.chevron.com/)\n",
"- [DUG\n",
" Wave](https://dug.com/model-building-with-dug-wave-full-waveform-inversion/) -\n",
" [DownUnder GeoSolutions](https://dug.com/)\n",
"- Imaging AnyWare \\[TGS\\]\n",
"- [JUDI](https://github.com/slimgroup/JUDI.jl) (SLIM group\n",
" **GeorgiaTech?**)\n",
"- [Neurotech Development Kit\n",
" (NDK)](https://agencyenterprise.github.io/neurotechdevkit/)\n",
"- [Stride](https://www.stride.codes)\n",
"- [xDSL](https://xdsl.dev)\n",
"- [pyLops](https://pylops.readthedocs.io/)\n",
"\n",
"Louboutin, M., M. Lange, F. Luporini, N. Kukreja, P. A. Witte, F. J.\n",
"Herrmann, P. Velesko, and G. J. Gorman. 2019. “Devito (V3.1.0): An\n",
"Embedded Domain-Specific Language for Finite Differences and Geophysical\n",
"Exploration.” *Geoscientific Model Development* 12 (3): 1165–87.\n",
".\n",
"\n",
"Luporini, Fabio, Mathias Louboutin, Michael Lange, Navjot Kukreja,\n",
"Philipp Witte, Jan Hückelheim, Charles Yount, Paul H. J. Kelly, Felix J.\n",
"Herrmann, and Gerard J. Gorman. 2020. “Architecture and Performance of\n",
"Devito, a System for Automated Stencil Computation.” *ACM Trans. Math.\n",
"Softw.* 46 (1). .\n",
"\n",
"Witte, Philipp A., Mathias Louboutin, Charles Jones, and Felix J.\n",
"Herrmann. 2020. “Serverless Seismic Imaging in the Cloud.”\n",
"."
],
"id": "0a92acd9-8885-46a4-a646-d186ebe179a7"
}
],
"nbformat": 4,
"nbformat_minor": 5,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
}
}
}