Features

Devito (Open-source)

DevitoPRO

Domain-specific language (DSL) for finite-differences
Write PDE solvers symbolically
Tensor algebra
Taylor series weights for any order
Customizable stencil weights
Explicit methods
Implicit methods (via PETSc) Alpha Alpha
Source/receivers (fully customizable)
Boundary conditions (fully customizable)
Staggered grids
Subsampling (e.g. space/time decimation)
Subdomains
API for third-party library callbacks
Jupyter notebook tutorials, examples and documentation
PDE-constrained optimization and adjoint method
Express adjoint-method optimization problems symbolically
Checkpoint(/Revolve)-based back-propagation
Compression-based back-propagation
Intelligent data-streaming disk-host-GPU
Lossy data compression for floating-point data
Algorithmic and compiler performance optimizations
Expanding-box (only compute active domain)
Mixed-precision computation
Data-locality optimization (e.g. cache-blocking)
Auto-tuning Basic Advanced
FLOP reduction (e.g. factorization, hoisting, CSE) Comprehensive Advanced
Advanced low-level optimization (e.g., memory alignment)
Supported architectures
CPUs: AMD, ARM, and Intel
GPUs: AMD, Intel, Nvidia
Accelerators: Intel KNC, KNL
Programming models
OpenMP for CPUs and GPUs
OpenACC for Nvidia GPUs
CUDA
HIP
SYCL Beta
NUMA-aware MPI-OpenMP
MPI: Single-node-multi-gpu
MPI: Multi-node-multi-gpu Beta
Optimized GPU-aware MPI
Supported cloud platforms
AWS
Azure
GCP
Devito Cookbook (includes forward, adjoint and 2D/3D)
Isotropic acoustic and viscoacoustic
Isotropic elastic and viscoelastic
Acoustic VTI and TTI
Viscoacoustic VTI and TTI
Elastic VTI and TTI
Cross-platform industry benchmarks. Includes iso-acoustic and acoustic TTI. All benchmarks are independently autotuned to get best performance on each target.
Access to benchmark reports and raw logs for reproducibility.
Cloud instance tuning and benchmarking.
Support
Slack: community support on public channels
Slack: Private/NDA support channels
Projects
Training
Consultancy
Support/maintenance