Optimised finite difference computation from symbolic equations

@article{Lange2017OptimisedFD,
  title={Optimised finite difference computation from symbolic equations},
  author={Michael Lange and Navjot Kukreja and Fabio Luporini and Mathias Louboutin and Charles R. Yount and Jan Christian H{\"u}ckelheim and Gerard Gorman},
  journal={ArXiv},
  year={2017},
  volume={abs/1707.03776}
}
Domain-specific high-productivity environments are playing an increasingly important role in scientific computing due to the levels of abstraction and automation they provide. In this paper we introduce Devito, an open-source domain-specific framework for solving partial differential equations from symbolic problem definitions by the finite difference method. We highlight the generation and automated execution of highly optimized stencil code from only a few lines of high-level symbolic Python… 

Figures from this paper

High-level python abstractions for optimal checkpointing in inversion problems
TLDR
This work presents an API that makes checkpointing accessible from a DSL-based code generation environment along with some initial performance gures with a focus on seismic applications.
Devito: an embedded domain-specific language for finite differences and geophysical exploration
TLDR
Devito, a new domain-specific language for implementing high-performance finite-difference partial differential equation solvers within Python and making heavy use of SymPy, a symbolic mathematics library, is introduced, making it possible to develop finite-Difference simulators quickly using a syntax that strongly resembles the mathematics.
Devito (v3.1.0): an embedded domain-specific language for finite differences and geophysical exploration
Abstract. We introduce Devito, a new domain-specific language for implementing high-performance finite difference partial differential equation solvers. The motivating application is exploration
Towards Self-Verification in Finite Difference Code Generation
TLDR
A case study in which the CIVL verification tool is combined with the Devito finite difference framework that generates optimised stencil code for PDE solvers from symbolic equations and shows a selection of properties of the generated code that can be automatically specified and verified during the code generation process.
Enabling numerically exact local solver for waveform inversion—a low-rank approach
TLDR
This work proposes a randomized singular value decomposition–based framework to compute the low-rank approximation of the Green's functions, where the cost of wave equation solves depends on the rank of the underlying Green’s function matrix instead of the number of grid points at the surface of the background model and on the boundary of the local domain.
Deep-convolutional neural networks in prestack seismic: Two exploratory examples
TLDR
This work discusses how generative networks can be employed in prestack problems ranging from the relatively mondane removal of the effects of the free surface to dealing with the complex effects of numerical dispersion in time-domain finite differences.
Effects of wrong adjoints for RTM in TTI media
In order to obtain accurate images of the subsurface, anisotropic modeling and imaging is necessary. However, the twenty-one parameter complete wave-equation is too computationally expensive to be of
Compressed Sensing Based Land Simultaneous Acquisition Using Encoded Sweeps
Simultaneous shooting methods using encoded sweeps can enhance the productivity of land acquisition in situations where deployment of many vibrators and larger receiver spread is not possible in the

References

SHOWING 1-10 OF 38 REFERENCES
SBLOCK: A Framework for Efficient Stencil-Based PDE Solvers on Multi-core Platforms
  • T. Brandvik, G. Pullan
  • Computer Science
    2010 10th IEEE International Conference on Computer and Information Technology
  • 2010
TLDR
A key feature of the framework is the extensive use of automatic source code generation which is used to achieve high performance on a range of leading multi-core processors.
CTADEL: a generator of multi-platform high performance codes for PDE-based scientific applications
TLDR
A prototype implementation has been developed which is limited to explicit finite difference methods as numerical solution method and results show that generation of efficient code is well feasible within the presented approach.
Firedrake: automating the finite element method by composing abstractions
TLDR
Firedrake adopts the domain-specific language for the finite element method of the FEniCS project, but with a pure Python runtime-only implementation centred on the composition of several existing and new abstractions for particular aspects of scientific computing.
YASK—Yet Another Stencil Kernel: A Framework for HPC Stencil Code-Generation and Tuning
TLDR
The YASK (Yet Another Stencil Kernel) framework is described, including domain-specific-languages (DSLs), code generators for stencil-equation and loop code, and a genetic-algorithm-based automated tuning tool.
PDEL—a language for partial differential equations
TLDR
A convenient, easy to learn and to use, high level problem oriented language to solve and study partial differential equation problems has been designed; a practical translator for the language has also been designed, and a working version of it has been constructed for a significant portion of the language.
Automated Solution of Differential Equations by the Finite Element Method: The FEniCS Book
This book is a tutorial written by researchers and developers behind the FEniCS Project and explores an advanced, expressive approach to the development of mathematical software. The presentation
SymPy: symbolic computing in Python
TLDR
The architecture of SymPy is presented, a description of its features, and a discussion of select domain specific submodules are discussed, to become the standard symbolic library for the scientific Python ecosystem.
A stencil compiler for short-vector SIMD architectures
TLDR
A domain specific language and compiler for stencil computations is proposed that allows specification of stencils in a concise manner and automates both locality and short-vector SIMD optimizations, along with effective utilization of multi-core parallelism.
Vector Folding: Improving Stencil Performance via Multi-dimensional SIMD-vector Representation
  • C. Yount
  • Computer Science
    2015 IEEE 17th International Conference on High Performance Computing and Communications, 2015 IEEE 7th International Symposium on Cyberspace Safety and Security, and 2015 IEEE 12th International Conference on Embedded Software and Systems
  • 2015
TLDR
This method reduces the number of memory accesses required by storing a small multi-dimensional block of data in each vector compared to the single dimension in the traditional approach, and shows performance speedups over traditional vectors.
...
...