Oxide-Enzyme: Integrating LLVM's Static Automatic Differentiation Plugin

This page summarizes the projects mentioned and recommended in the original post on /r/rust

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • oxide-enzyme

    Discontinued Enzyme integration into Rust. Experimental, do not use.

  • Rust-CUDA

    Ecosystem of libraries and tools for writing and executing fast GPU code fully in Rust.

  • I have not made it more public since there are still a few missing bits. For example we can currently only work on functions which are ffi safe (although those can call not ffi-safe code). My current time schedule is therefore analyzing an open issue, adding a few examples and then "publishing" this one for people to get familiar with Enzyme, while working on a new implementation which should not be limited by ffi anymore and should also be able to support things like https://github.com/Rust-GPU/Rust-CUDA

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Enzyme

    High-performance automatic differentiation of LLVM and MLIR. (by EnzymeAD)

  • To give a little bit of context here, this is a Rust frontend for Enzyme itself, which is a leading Auto-Diff tool. The key advantage is that unlike most of the existing tools it does generate gradient functions after applying a lot of (LLVM's) optimizations, which leads to very efficient gradients (benchmarks here: https://enzyme.mit.edu/). Working on LLVM level also allows it to work across language barriers. Finally it is also the first AD library to support generic AMD-HIP / NVIDIA-CUDA code and works also with OpenMP and MPI. https://c.wsmoses.com/papers/EnzymeGPU.pdf I have intentions to add rayon support, since that is more likely to be used on our Rust side :)

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts