| v4.8.21 | ## Changes - tests: Add an additional test for loop scheduling @EdCaunt (#2835) - api: Extend side API to all derivative operator shortcuts @EdCaunt (#2811) - Add separate images for CUDA 12 @JDBetteridge (#2785) - misc: Miscellaneous corner cases fixes @mloubout (#2730) - compiler: split alloc and init @mloubout (#2744) ## API - Tens stagg fix @mloubout (#2854) - api: fix interpolate with complex dtype @mloubout (#2849) - api: fix interp/eval of expressions @mloubout (#2843) - c | Low | 2/23/2026 |
| v4.8.20 | ## Changes - CI: Cannot set `--env CUDA_VISIBLE_DEVICES` for `docker run` when using ng `--gpus "device=${CUDA_VISIBLE_DEVICES:-all}"` - dropping --env arg. @ggorman (#2710) - misc: switch to f-string throughout @mloubout (#2706) - misc: Remove make-pbs.py @FabioLuporini (#2700) - compiler: Hotfix the memory estimate for certain devices @EdCaunt (#2699) - misc: Expand derivative touchup @JDBetteridge (#2695) - misc: Remove decrepit folders @EdCaunt (#2663) - misc: Switch mpi-x pub to ie | Low | 9/2/2025 |
| v4.8.19 | # Drop support for Python 3.9 ## Changes ## Compiler - compiler: Privilege default par-tile with rcompile @FabioLuporini (#2636) - compiler: Make cse toposort stable @mloubout (#2633) ## đ Bug Fixes - compiler: fix deque pop order @mloubout (#2637) - compiler: Make cse toposort stable @mloubout (#2633) ## Installation - deps: Drop Python 3.9 @enwask (#2631) **Full Changelog**: https://github.com/devitocodes/devito/compare/v4.8.18...v4.8.19 | Low | 6/20/2025 |
| v4.8.18 | ## Changes ## Compiler - compiler: Address various compiler hotspots with operators containing large expression counts @EdCaunt (#2624) ## Architectures and JIT - arch: fix json erro with no card @mloubout (#2620) ## đ Bug Fixes - compiler: Revamp MPI hoisting and merging @FabioLuporini (#2629) ## Continuous Integration - ci: Fix pytest regression @enwask (#2623) ## Installation - pip prod(deps): update pytest-cov requirement from <6.1.2 to <6.2.2 @[dependabot[bot] | Low | 6/14/2025 |
| v4.8.17 | # Drop support for numpy <2, sympy <1.12 ## Changes - misc: Purge abc.abstractproperty as it is deprecated @EdCaunt (#2603) - compiler: Blocked SubDimensions now use root dimension name @EdCaunt (#2600) ## API - api: fix kwargs processing for tensor functions @mloubout (#2604) - api: Add DEVITO_DEVICE_DEFAULT env var @FabioLuporini (#2597) - api: revamp subsampling factors to avoid duplicates @mloubout (#2575) ## Compiler - compiler: Add VectorAccess as an internal type @F | Low | 5/27/2025 |
| v4.8.16 | ## Changes - misc: Remove spurious rank info when running without MPI @EdCaunt (#2593) ## API - dsl: Add Real, Imag, and Conj operators @EdCaunt (#2564) ## Documentation - misc: Update FAQ.md @FabioLuporini (#2590) ## đ Bug Fixes - api: Add retrocompat to is_imaginary for older sympy @mloubout (#2591) ## Installation - deps: upper bound on codepy due to breaking latest @mloubout (#2594) - api: Add retrocompat to is_imaginary for older sympy @mloubout (#2591) **F | Low | 5/1/2025 |
| v4.8.15 | ## Changes ## API - api: Fix staggering setup and tensor rebuilding @mloubout (#2583) - dsl: Remove useless memory check (already done at alloc time) @FabioLuporini (#2563) - dsl: ensure SparseFunction coordinates and point symbols are always real @EdCaunt (#2557) ## Examples - examples: Fix norm for space order 4 @ZoeLeibowitz (#2565) ## Compiler - compiler: Improve quality of generated code with Bundles and MPI @FabioLuporini (#2587) - compiler: Fix issue 2577 - edit print | Low | 4/23/2025 |
| v4.8.14 | ## Changes - misc: update all link to main @mloubout (#2552) ## API - api: Introduce complex numbers support (np.complex64/128) @mloubout (#2375) ## Documentation - misc: Update advisor with oneAPI 2025 @georgebisbas (#2533) ## Compiler - api: Introduce complex numbers support (np.complex64/128) @mloubout (#2375) - compiler: Enhance IR for GPU codegen @FabioLuporini (#2555) ## đ Bug Fixes - compiler: Fix update_properties @FabioLuporini (#2548) ## Testing - c | Low | 3/19/2025 |
| v4.8.13 | ## Changes ## API - dsl: Introduce ability to define Functions on Subdomains @EdCaunt (#2245) ## Compiler - compiler: fix application visitor for nest Call @mloubout (#2544) ## Architectures and JIT - arch: add missing openmp flag for aomp compiler @mloubout (#2541) ## đ Bug Fixes - compiler: Fixup deterministic codegen @FabioLuporini (#2543) **Full Changelog**: https://github.com/devitocodes/devito/compare/v4.8.12...v4.8.13 | Low | 3/4/2025 |
| v4.8.12 | ## API - api: Relax custom coefficient spacing enforcement @mloubout (#2530) - api: fix backward compatibility of Substitution, missing function check @mloubout (#2522) - api: Misc fixes for builtins and harmonic averaging @mloubout (#2520) - api: fix equation pickling @mloubout (#2490) - api: more robust processing of custom weight with spacing @mloubout (#2489) - api: fix pickling of sparse operations @mloubout (#2488) - api: support custom coeffs for div/grad/curl @mloubout (#2486)
| Low | 2/17/2025 |
| v4.8.11 | ## Changes - dsl: Make CondEq and CondNe easier to import @EdCaunt (#2425) ## API - api: Support combination of condition and factor for ConditionalDimension @mloubout (#2413) - misc: minor miscelanous fixes @mloubout (#2406) ## Compiler - compiler: Bump default block size @FabioLuporini (#2412) - compiler: Revamp MultiSubDimension lowering @FabioLuporini (#2411) - compiler: fix cse with different conditionals @mloubout (#2410) - compiler: Patch bug in SubDomainSet lowering @E | Low | 7/24/2024 |
| v4.8.10 | ## Changes ## Dependencies - deps: Fix sympy install for pypi ## API - compiler: Drop SubDomainSet earlier during compilation for more graceful lowering @EdCaunt (#2393) ## Compiler - compiler: Drop SubDomainSet earlier during compilation for more graceful lowering @EdCaunt (#2393) | Low | 7/11/2024 |
| v4.8.9 | ## Changes ## Compiler - compiler: Default to index-mode=int32 @FabioLuporini (#2399) - compiler: Yet another batch of compilation tweaks @FabioLuporini (#2396) - compiler: Improve data streaming backend @FabioLuporini (#2390) ## MPI - MPI: Fix data assignement for single mpi rank and factor haloupdate @mloubout (#2394) ## đ Bug Fixes - compiler: Strengthen int32 error check @FabioLuporini (#2402) - compiler: Patch CSE in presence of conditionals @FabioLuporini (#2392) - M | Low | 7/10/2024 |
| v4.8.8 | ## Changes ## API - API: fix printer dtype processing @mloubout (#2388) ## Compiler - compiler: Revamp code generation for asynchronous operations @FabioLuporini (#2376) - compiler: Tweaks to enable decoupling on GPUs @FabioLuporini (#2385) ## đ Bug Fixes - API: fix printer dtype processing @mloubout (#2388) - mpi: Avoid UnboundLocalVariable error @FabioLuporini (#2386) ## Continuous Integration - ci: avoid apt upgrade use base as is (updated every week} @mloubout (#23 | Low | 6/26/2024 |
| v4.8.7 | ## Changes - misc: Remove (object) in class definitions @EdCaunt (#2378) ## API - mpi: Fix data_gather for sparse functions @mloubout (#2379) - API: Revamp sparse subfunction @mloubout (#2374) - api: fix corner case staggered fd for centered x0 @mloubout (#2373) - api: cleanup FD tools and support zeroth order derivative @mloubout (#2368) ## Examples - examples: Add an example notebook for ADER-FD schemes @EdCaunt (#2338) - examples: fix tuto numbering for doc rendering @mlou | Low | 6/4/2024 |
| v4.8.6 | ## Changes ## Examples - examples: Update tti fd for better stability @mloubout (#2363) ## Testing - tests: Add test for combining multiple ConditionalDimensions @EdCaunt (#2361) - CI: fix macos runner python @mloubout (#2362) ## Continuous Integration - CI: fix macos runner python @mloubout (#2362) ## Installation - pip prod(deps): update mpi4py requirement from <3.1.6 to <3.1.7 @dependabot (#2352) | Low | 4/29/2024 |
| v4.8.5 | Fix `Manifest.in` for missing pypi files **Full Changelog**: https://github.com/devitocodes/devito/compare/v4.8.4...v4.8.5 | Low | 4/23/2024 |
| v4.8.4 | ## Changes - compiler: Patch double buffering @FabioLuporini (#2247) - compiler: Fix unexpansion w custom coeffs @FabioLuporini (#2242) ## API - api: Cleanup sparse setup for precomputed @mloubout (#2353) - api: Add Hicks (sinc) interpolation api @mloubout (#2342) - api: add priority to fd coefficients for mixed derivatives @mloubout (#2331) - api: add support for 45 degree FD approx @mloubout (#2326) - api: Fix custom fd for staggered @mloubout (#2323) - api: Fix gpu-fit for Tens | Low | 4/18/2024 |
| v4.8.3 | ## Changes - Andrew add tests to test operator 2194 @AndrewCheng827 (#2207) ## API - api: enforce interpolation radius to be smaller than any input space âĻ @mloubout (#2234) - api: cleanup SubDimension and SubDomain @mloubout (#2219) - misc: various Dimension internal fixes @mloubout (#2205) - api: Cleanup and improve SubFunction @mloubout (#2198) - builtins: Support batched initialize_function @FabioLuporini (#2176) - api: Revamp interpolation/injection @FabioLuporini (#2128) # | Low | 10/16/2023 |
| v4.8.2 | ## API - dsl: Removed dynamic classes for AbstractFunctions (fixes memory leaks seen by some users) @FabioLuporini (#2190) - api: Fix symbolic coefficients for cross derivatives @mloubout (#2185) - api: Allow parametric par-tile as input @FabioLuporini (#2168) - api: Use subs for origin in the case where index is a function @mloubout (#2120) - compiler: Add utility function to normalize sympy arguments @FabioLuporini (#2125) ## Examples - Examples: Free surface for coupled TTI equ | Low | 9/6/2023 |
| v4.8.1 | ## Changes ## Examples - Examples: tweaked userapi free surface notebook to use MPI-safe implementation @EdCaunt (#1952) ## Compiler - compiler: Revamp compilation of halo exchanges @FabioLuporini (#2089) - compiler: Do block with partial data reuse @FabioLuporini (#2094) - compiler: Relax _mark_overlappable @FabioLuporini (#2069) ## Architectures and JIT - compiler: only use offloading flags for amd gpu not cpu @mloubout (#2087) - arch: Support aws graviton @mloubout (#2080 | Low | 4/14/2023 |
| v4.8.0 | ## Changes ## misc - Updated contact information in the Code of Conduct. @ggorman (#2038) ## API - symbolics: use devito floor instead of Undefined Function @mloubout (#2052) - api: Add dimension-wise summing builtin and tests @mloubout (#1989) ## Examples - Examples: Add Darcy flow example @sashaowen (#1998) - examples: Add shallow water equations notebook @AtilaSaraiva (#1867) - examples: invoke tti example with --constant argument @ofmla (#1914) ## Documentation - d | Low | 2/14/2023 |
| v4.7.1 | ## Changes ## Continuous Integration - docker: fix deployment condition @mloubout (#1985) | Low | 8/3/2022 |
| v4.7.0 | ## Changes - compiler: Fix checkpoint size when save != None @speglich (#1906) - compiler: Revamp generation of implicit equations @FabioLuporini (#1908) ## API - compiler: Support interpolation with user-provided implicit dims @FabioLuporini (#1948) - api: Add op.cinterface for C-level interoperability @FabioLuporini (#1843) ## Examples - examples: Fix grammar and spelling mistakes in pml example @PershingSquare (#1930) - examples: Update MPI tutorial notebook and scripts @geo | Low | 8/3/2022 |
| v4.6.2 | ## Changes ## Documentation - misc: update pypi @georgebisbas (#1837) ## Compiler - compiler: Augment code generation capabilities for CUDA/HIP/SYCL support @FabioLuporini (#1828) ## GPU - gpu: Adding DPCPP compiler support @reguly (#1836) ## đ Bug Fixes - compiler: Patch linearization pass @FabioLuporini (#1839) | Low | 2/16/2022 |
| v4.6.1 | ## Changes ## API - ckp: Checkpointing update @navjotk (#1774) - sympy: Extend SymPy support to 1.9 @mloubout (#1786) ## Examples - benchmarks: custom click type for grid params @mloubout (#1832) - examples: Add nonzero example to ConditionalDimension tutorial @georgebisbas (#1820) - examples: add adjoint, born, gradient, checkpointing to the tti example @mloubout (#1809) - examples: Improve tti_pure_wave_eq tutorial @ofmla (#1779) - examples: Add tti_pure_wave_eq tutorial @ofml | Low | 2/11/2022 |
| v4.6 | ## Changes ## API - sympy: proper version check @mloubout (#1769) ## Examples - examples: enforce stable space order for self adjoint op @mloubout (#1747) - tests: add tti_setup to gradientJ test @ofmla (#1740) ## Compiler - compiler: Add machinery for custom memory allocators and MPI @FabioLuporini (#1764) - compiler: lift skewing in higher block levels @georgebisbas (#1735) - compiler: Loop fission @FabioLuporini (#1732) - compiler: improve HB generated code @georgebisbas | Low | 10/6/2021 |
| v4.5 | # Changes ## API - dsl: Generalised MatrixSparseTimeFunction @tjb900 (#1719) - dsl: Improve support for running operators concurrently in python threads @tjb900 (#1708) ## Examples - examples: Add viscoacoustic Born operator to 1st sls equation @nogueirapeterson (#1690) - examples: Switch to adjoint time derivative @mloubout (#1706) - examples: re-run skew adjoint notebook @jkwashbourne (#1710) - examples: Fix source illumination @rabreucristo (#1707) - examples: Fix broken gemp | Low | 7/26/2021 |
| v4.4 | # Changes ## đ Bug Fixes - compiler: Patch TempFunction pickling @FabioLuporini (#1677) - bench: Patch ASV's generation of new plots @FabioLuporini (#1672) - gpu: Fix leaks due to excessive fetching/prefetching @FabioLuporini (#1658) - types: Drop unsafe/unnecessary memoization in the arguments processing engine @FabioLuporini (#1647) - compiler: Fix processing of grid spacing @FabioLuporini (#1628) - misc: Avoid crashing on missing _memfree_args @FabioLuporini (#1612) - compiler: F | Low | 4/23/2021 |
| v4.3 | ## đ Bug Fixes - Patch aliases' min-storage option @FabioLuporini (#1535) - Fix loop collapsing @FabioLuporini (#1534) - operator: Patch grid-carried argument overrides @FabioLuporini (#1523) - Fix profiling IET for Intel Advisor benchmarking @georgebisbas (#1516) - Fix ARM issues @georgebisbas (#1515) - make test tools less random @ggorman (#1507) - ir: Fixup _lower_stepping_dims @Leitevmd (#1504) - Fix custom coefficients on staggered grids @EdCaunt (#1497) - Tensor grid fixup @mlo | Low | 1/20/2021 |
| v4.2.3 | ## Synopsis - Performance optimizations in the symbolic layer and generated code for x86, GPU and MPI. - Various minor correctness and performance bug fixes. - Improvements to application developer API. - Added new tutorial notebooks. - Increased test coverage - particularly for MPI and GPU's. ## Backwards compatibility breaks and deprecations None ## Changes - Restrict pytest to < 6.0 @rhodrin (#1411) - pip prod(deps): update distributed requirement from <2.20 to <2.22 @dependabot | Low | 8/5/2020 |
| v4.2.2 | Compiler: - Improve CIRE - Conditionals improvement - Improve aliases detection Misc: - Updated minimum SymPy version requirement - Refreshed docs - Various bug fixes. - Added more tests for CI and performance regression. Benchmark: - Improved asv - Added support for adjoint/jacobian/jacobian_adjoint - Improved JIT support for AMD, added AOMP compiler Example: - New Skew Self Adjoint operator - Homogenize seismic examples and Model. Many thanks to all the | Low | 6/5/2020 |
| v4.2.1 | pip * Removed direct dependencies to enable PyPI Air-Speed Velocity (ASV) * Added performance regression testing via ASV CI/CD * Automatically start and stop Azure VM's for testing. Benchmarking * Additional performance metrics Documentation * New examples for TTI adjoint and viscoacoustic. * Updated project logo and documentation version. * Various improvements to examples/notebooks. Bugfixes * Loop fusion. * MPI/SubDomain. Many thanks to all the contributors to this | Low | 5/1/2020 |
| v4.2 | 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 compilatio | Low | 4/16/2020 |
| v4.1 | GPUs * Support for more Operators -- isotropic acoustic, TTI, elastic, viscoelastic, ... * Support for reductions * Fixed several bugs concerning code generation DSL * Fixed minor bugs related to derivatives and finite-differences MPI * Fixed several bugs arising in presence of SubDomains and/or SubDimensions * Fixed code generation in full mode (compute-communication overlap), when the same symbol (e.g. `comm`) was appearing twice in the signature of elemental functions Documenta | Low | 2/26/2020 |
| v4.0 | Tensor algebra support (#873): - `VectorFunction` and `VectorTimeFunction` - (2nd order) `TensorFunction` and `TensorTimeFunction` - Full support for FD and related operations (derivatives, shortcuts, solve, ...) - Differential operators such as `div`, `grad` and `curl` FD extensions: - Custom FD with user-supplied coefficients as `Function` (#964) Extended and more rigorous support for staggered grids (#873): - True half-grid staggering (`u(x + h_x/2)`) - Automatic ev | Low | 12/5/2019 |
| v3.5 | Release notes -------------- * MPI support: - Python-level: MPI-distributed NumPy arrays. - C-level: code generation for sub-domains, staggered grids, operators with coupled PDEs. - C-level: performance optimizations (e.g., computation-communication overlap). * Lazy evaluation of derivatives. * Revisited staggered grids API (now Dimension-based, previously mask-based). * Re-engineered clustering (which means smarter loop fusion/fission). * DSE: Improved aliases detection. * DLE | Low | 8/8/2019 |
| v3.4 | Release notes -------------- * Preliminary support for MPI (no changes to user code requested) * Support for staggered grids * Improved compilation technology * Improved Operator autotuning * More powerful DSL (e.g., take derivatives of entire expressions such as `(u+v).dx`) * More efficient pickling * Misc bug fixes * New modeling examples based on the elastic wave equation * New examples describing aspects of the compilation technology | Low | 12/6/2018 |
| v3.3 | This release ships the following features, besides a large number of misc improvements and bug fixes * Support for Docker-based installation * Introduction of PrecomputedSparseFunction for SparseFunction with precomputed coefficients * Smarter JIT engine, including autodetection of the backend-compiler version for ad-hoc optimisations * Operator pickling * Introduction of new IR level: the ScheduleTree level * Smarter loop generation * Better, more efficient data dependence analysis * | Low | 9/20/2018 |
| dft-paper | Release dft-paper | Low | 6/5/2018 |
| v3.2.0 | This release builds upon ``v3.1.0`` including all features from Devito ``v3.2-beta`` as well as the following changes: * Domain-allocation switch: now Operators run over the entire Grid, no matter what the stencil radius is. * "Min-max" API to iterate over subregions of the Grid. * A set of examples showing how to use Devito for linear algebra calculations * Better seismic examples, more resampling. * Parallelization of loops with reduction dependences with OpenMP atomics * Simpler, bett | Low | 4/13/2018 |
| v3.2-beta | * Improved organisation of the Intermediate Representation classes (``ir`` submodules) * Moved Clusterization to IR from DSE * Better type hierarchy (reuse code from superclasses, ``SparseFunction`` -> [``SparseFunction``, ``SparseTimeFunction``], ...) * Better ``Dimension`` hierarchy, now wired into the main type hierarchy * Drop "Global reverse flag" hack * Drop "Global modulo flag" hack * Revisited argument processing for ``Operator.apply`` * Devito now explicitly provides its own ``Eq | Low | 2/27/2018 |
| v3.1.0 | This release includes several new pieces of functionality and some significant API changes: * Updated to Python-3 (exclusively) and SymPy-1.1 * Renamed symbol types: `DenseData`->`Function`, `TimeData`->`TimeFunction`, `PointData`->`SparseFunction` * Introduction of a `Grid` class that provides the defaulting behaviour for space and time dimensions * Enable completely generic operators without explicit substitution of spacing variables * Addition of explicit start/end values for dimension i | Low | 10/28/2017 |
| v3.0.3 | A utility release to ensure a stable version before a set of planned API changes. Includes changes and some signficant progress on: - Prototype YASK-backend - Improved arguments handling - Seismic examples and tutorials - `RickerSource` and `demo_model` utilities - New TTI formulation (shifted and centred) - Anaconda install - Autotuning fixes - Compiler-debug model | Low | 9/26/2017 |
| v3.0.2 | Minor update with various fixes and some internal re-structuring: * Fix potential memory leak and removed unused memmap interface * Fix reverse-time iteration bug * Fix summary printing in DSE/DLE * YASK integration phase 2 (data movement through YaskGrids) * Generalized loop blocking (includes several bug fixes) * Additional linear convection example notebook with smooth initial condition | Low | 7/5/2017 |
| 3.0.1 | Minor release that contains several bug-fixes and additional documentation: * Fixes and test for the `ForeignOperator` interface * Improved argument derivation in `Operator.apply()` * Improved expression scheduling in `Operator` * New tutorial notebook on seismic modelling * New introductory tutorial based on CFD examples * Various documentation fixes throughout | Low | 6/7/2017 |
| v3.0.0 | This is the base release for Devito version 3.0. It primarily provides a new and improved `Operator` API as well as two backend engines that perform a sequence of configurable compiler passes during the code generation stages to increase the performance of the generated code: * DSE - Devito Symbolic Engine: Provides performance optimization passes that manipulate SymPy equations to decrease the number of floating-point operations performed when evaluating a grid point. * DLE - Devito Loop En | Low | 5/19/2017 |
| v2.0.1 | Initial tag of stable v2.0.1 pre-release. | Low | 1/27/2017 |