# Devito

A Python package that compiles high-level symbolic descriptions of stencil computations, such as finite-difference methods, into optimized, parallel code for CPUs, GPUs, and clusters.

Devito is a Python package for implementing optimized stencil computations, such as finite-difference methods for partial differential equations, image processing, and machine learning kernels, from high-level symbolic problem definitions. It builds on SymPy and uses automated code generation with just-in-time compilation to produce optimized computational kernels for CPUs, GPUs, and clusters of either.

A developer expresses a problem as a functional composition of equations, boundary conditions, and sparse operations such as interpolation, and Devito's compiler analyzes the resulting operator, applies optimizations such as vectorization, loop blocking, and symbolic transformations to reduce floating-point operations, and generates parallel code using OpenMP, OpenACC, or MPI as needed. It also supports distributed NumPy arrays across multi-node domain decompositions and includes an autotuning framework for performance tuning.

It ships with interactive Jupyter notebooks and is distributed under the MIT license.

Website: http://www.devitoproject.org
