| | |
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 | | ✔ |