devitocodes/devito

DSL and compiler framework for automated finite-differences and stencil computation

What it solves

Devito is designed to simplify the creation of highly optimized computational kernels for stencil computations, such as finite differences and image processing. It removes the need for manually writing low-level, platform-specific code to achieve high performance on CPUs, GPUs, and multi-node clusters.

How it works

Devito uses a functional language based on SymPy to allow users to define problem specifications symbolically. It then employs automated code generation and just-in-time (JIT) compilation to transform these high-level definitions into optimized low-level code. The compiler automatically analyzes the input to apply optimizations like SIMD vectorization, OpenMP/OpenACC parallelism, and MPI for multi-node distribution.

Who it’s for

Researchers and engineers working with partial differential equations, image processing, and machine learning who need to execute complex stencil operations efficiently across different hardware platforms.

Highlights

  • Automated Optimization: Automatically generates parallel code using SIMD, OpenMP, OpenACC, and MPI.
  • Symbolic Specification: Uses a functional language to express finite difference operators and tensor contractions.
  • Hardware Flexibility: Seamlessly executes on CPUs, GPUs, and clusters.
  • ML Integration: Integrates with popular frameworks like PyTorch and TensorFlow.
  • Customization: Provides tools for custom stencils, staggered grids, and an autotuning framework for performance tuning.

Related

  • Project
  • Project
  • Project
  • Project
  • Project