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