Devito is a domain-specific Language (DSL) and code generation framework for the design of highly optimized finite-difference kernels for use in simulation, inversion and optimization. Devito utilizes:
- symbolic computation to allow the definition of operators from high-level
- symbolic equations; compiler software technologies to automatically
- generate tuned parallel (MPI, OpenMP 5, OpenACC) optimized software for a
- wide range of computer architectures (AMDs, ARM, GPUs, Intel Xeon, Xeon Phi,
The primary use of Devito today is in exploration geophysics where Devito provides high-performance propagators and gradient operators for FWI and RTM. Devito’s two killer features are:
- Ease of use: Python + symbolic mathematics makes it quick and easy to write complicated PDE solvers and their adjoints.
- High-performance: By exhaustively applying nearly all known optimization techniques for structured computation, Devito has been shown to outperform expert hand-tuned commercial codes.
Devito's unique combination of techniques and software technologies reduces the development time of high-performance code from months to days, potentially saving millions of dollars in development costs.
A brief history of Devito
Devito arose from an Imperial College London Intel Parallel Computer Centre started in 2014 by Dr Gerard Gorman. The goal was to develop open-source high-performance software for seismic imaging; taking as inspiration other code generation projects such as FEniCS and Firedrake. From the beginning, this initiative benefited from the industry guidance of Hamish McIntire and Charles Jones at BG Group and close academic collaboration with the SLIM group led by Prof Felix Herrmann.
The first incarnation of Devito used Python and symbolic computation at the primary programming interface for end-users. However, the underlying code generation technology was essentially a source-to-source translater which limited the range of optimizations that could be applied to the generated code. This changed in 2016 when Dr Fabio Luporini joined the project and rewrote the Devito backend as a true optimizing compiler.
As of 2020, Devito has users from over 100 different organizations and companies. In January of this year, we established the first Devito open-source consortium with industrial partners BP, DUG, Microsoft and Shell. Microsoft sponsored an additional project to accelerate the development of GPU support in Devito, as well as performance and scalability on Microsoft Azure.
Devito Codes Ltd
In February 2020 Dr Gerard Gorman and Dr Fabio Luporini founded Devito Codes Ltd to secure the long term future of Devito. Key to our strategy is drawing clear lines between the open-source Devito project and DevitoPro.
All general-purpose symbolic and compiler software technology will continue to be developed and maintained as open-source and patent-free. The basic research underpinning Devito will continue to be published in the open literature.
Devito Codes Ltd will focus on providing professional services including technical support, training, bespoke software development services and bespoke optimization for clients hardware. We are also developing a new software product called DevitoPro, which consists of proprietary extension packs such as a toolkit for integration with legacy codes.
Finally, we are also proud to announce that we have signed a partnership agreement with DUG to provide HPC software development services on DUG-McCloud. Over the last few years, we have significantly benefited from working with closely with our friends at DUG. We look forward to continuing this relationship into the future. In particular, to explore how the knowhow and disruptive software technologies developed within Devito can be reapplied to other compute-intense big-data problems.