Devito v4.2 released
We are delighted to announce the release of Devito v4.2. The headline news is that Devito now has multi-node-multi-GPU support for problems that require domain-decomposition based parallelism. See below for the full details release notes.
Furthermore, we are proud to announce that Devito is now a NumFOCUS affiliated project!
Devito is a Python package to implement optimized stencil computation (e.g., finite differences, image processing, machine learning) from high-level symbolic problem definitions. Devito builds on SymPy and employs automated code generation and just-in-time compilation to execute optimized computational kernels on several computer platforms, including CPUs, GPUs, and clusters thereof.
- Website: https://www.devitoproject.org/
- GitHub: https://github.com/devitocodes/devito
Release notes
GPU support
- Added OpenACC 2.6 code generation support.
- Added domain decomposition support for multi-node-multi-GPU via MPI and OpenACC.
Testing, CI/CD
- Added testing with PGI compiler suite v19.10 on NVidia K80 GPU's.
- Enhanced CI testing for OpenMP 5 offloading onto GPU's.
- Enhanced CI testing for domain decomposition with MPI.
Performance optimizations
- Wide range of performance optimizations to the Devito compiler to speed-up compile time (~2-5x speedup in compilation time).
- Various low-level performance and memory optimizations (e.g. identifying and removing redundant computations).
DSL extensions
- tools.Evaluable -> finite_differences.Evaluable
- Dynamic FD shortcuts (i.e. u.dx(fd_order=2)). Supports FD order, x0 and side.
YASK and OPS backends
- After a great deal of consideration, we have decided to drop support for YASK (https://01.org/yask) and OPS (https://github.com/OP-DSL/OPS) as Devito backends. While YASK and OPS have many desirable features, the software engineering overhead (person-effort) to maintain feature-complete support proved unsustainable. We would like to take this opportunity to thank Chuck Yount (YASK) and Istvan Reguly (OPS) for their collaboration on both software development and algorithm development, which has been of great benefit to Devito.
Tutorials and documentation
- Revised FAQ - https://github.com/devitocodes/devito/wiki/FAQ
- New Jupyter notebooks:
- GPU tutorial.
- PML boundary condition tutorial.
- Normal Moveout (NMO) tutorial.
- Revised viscoelastic example.
General updates
- Added Developer Certificate of Origin to Devito contribution guidelines.
- General improvements to documentation, examples and tutorials.
- Several minor bug fixes.
- Increased test coverage.
- Improvements to test code coverage reporting.
- Added PGI compiler support.
- Added MPI support for the SubDomainSet feature.
- Additional runtime warnings for inadequate problem specifications, e.g. stencil radius greater than rank-domain width.
- Deprecate DEVITO_DLE, replaced by DEVITO_OPT.
- Deprecate DEVITO_OPENMP, replaced by DEVITO_LANGUAGE.
Many thanks to all the contributors to this release (last surname alphabetical order):
- George Bisbas (Imperial College London)
- Tim Burgess (DownUnder Geosolutions)
- Edward Caunt (Imperial College London)
- Gerard Gorman (Imperial College London)
- Mathias Louboutin (Georgia Institute of Technology)
- Fabio Luporini (Devito Codes)
- Rhodri Nelson (Imperial College London)
- Peterson Nogueira (SENAI CIMATEC and UFBA)
- Joao Speglich (SENAI CIMATEC)
- John Washbourne (Chevron)
- Philipp Witte (Georgia Institute of Technology)
Special thanks and congratulations to Ken Hester (NVidia), winner of the Devito hackathon at Rice OGHPC 2020, who used the Devito JIT backdoor to develop the prototype OpenACC code which informed the implementation of OpenACC code generation support within this release.
Well Done!
"I put this in google translate but no joy I’m afraid - language unrecognised 😀Congratulations I think.", Darragh Power Thanks for reminding me of the value of plain English! Translation: Devito makes it straightforward for numerical scientists and engineers to develop sophisticated mathematical software. By "straightforward" I mean that the developer can write their code using symbolic mathematics (plain English for engineers you might say). Devito takes this abstract representation, first applies all the relevant mathematical rules (for finite differences) and then uses the latest in computer science compiler methods to automatically generate *very* fast (and correct!) code. This release was primarily about adding multi-GPUs to the list of computer architectures supported. This automation is a big deal because manually developing this kind of software is *insanely difficult* because of the range of skills required, and there is a lot of it (imagine you are digging a canal with a spoon). Energy companies invest hundreds of millions of dollars developing these codes manually. It is left as an exercise to the reader to work out the potential savings. Oh, and it is open source.
Congratulations, Devito team