All Projects → wsmoses → Enzyme

wsmoses / Enzyme

Licence: other
High-performance automatic differentiation of LLVM.

Programming Languages

c
50402 projects - #5 most used programming language
rust
11053 projects
cpp
1120 projects

Projects that are alternatives of or similar to Enzyme

Enzyme.jl
Julia bindings for the Enzyme automatic differentiator
Stars: ✭ 90 (-78.47%)
Mutual labels:  compiler, llvm, automatic-differentiation, enzyme
Exprtk
C++ Mathematical Expression Parsing And Evaluation Library
Stars: ✭ 301 (-27.99%)
Mutual labels:  compiler, scientific-computing, high-performance
Play with llvm
A book about LLVM & Clang(中文开源书:玩转 LLVM)
Stars: ✭ 175 (-58.13%)
Mutual labels:  compiler, llvm, clang
Seeless
C IDE for iOS
Stars: ✭ 71 (-83.01%)
Mutual labels:  compiler, llvm, clang
adorad
Fast, Expressive, & High-Performance Programming Language for those who dare
Stars: ✭ 54 (-87.08%)
Mutual labels:  llvm, clang, scientific-computing
Simpeg
Simulation and Parameter Estimation in Geophysics - A python package for simulation and gradient based parameter estimation in the context of geophysical applications.
Stars: ✭ 283 (-32.3%)
Mutual labels:  simulation, scientific-computing
Clang Power Tools
Bringing clang-tidy magic to Visual Studio C++ developers.
Stars: ✭ 285 (-31.82%)
Mutual labels:  llvm, clang
Speedy.js
Accelerate JavaScript Applications by Compiling to WebAssembly
Stars: ✭ 300 (-28.23%)
Mutual labels:  compiler, llvm
Soll
SOLL is a new compiler for generate Ewasm from solidity and yul. See a demo here: https://asciinema.org/a/ezJqNLicn5fya02zwu4VXIo8a
Stars: ✭ 329 (-21.29%)
Mutual labels:  compiler, llvm
Olifant
A simple programming language targeting LLVM
Stars: ✭ 58 (-86.12%)
Mutual labels:  llvm, clang
Awesome Graal
A curated list of awesome resources for Graal, GraalVM, Truffle and related topics
Stars: ✭ 302 (-27.75%)
Mutual labels:  llvm, high-performance
Clangkit
ClangKit provides an Objective-C frontend to LibClang. Source tokenization, diagnostics and fix-its are actually implemented.
Stars: ✭ 330 (-21.05%)
Mutual labels:  llvm, clang
Clangwarnings.com
A list of Clang warnings and their descriptions.
Stars: ✭ 276 (-33.97%)
Mutual labels:  compiler, clang
Deepc
vendor independent deep learning library, compiler and inference framework microcomputers and micro-controllers
Stars: ✭ 260 (-37.8%)
Mutual labels:  compiler, llvm
Blitz
Blitz++ Multi-Dimensional Array Library for C++
Stars: ✭ 257 (-38.52%)
Mutual labels:  scientific-computing, high-performance
Swiftweekly.github.io
A community-driven weekly newsletter about Swift.org
Stars: ✭ 305 (-27.03%)
Mutual labels:  llvm, clang
Sericum
(Toy) Compiler Infrastructure influenced by LLVM written in Rust
Stars: ✭ 366 (-12.44%)
Mutual labels:  compiler, llvm
Bfc
An industrial-grade brainfuck compiler
Stars: ✭ 340 (-18.66%)
Mutual labels:  compiler, llvm
Scala Native
Your favorite language gets closer to bare metal.
Stars: ✭ 4,053 (+869.62%)
Mutual labels:  compiler, llvm
Nlvm
LLVM-based compiler for the Nim language
Stars: ✭ 380 (-9.09%)
Mutual labels:  compiler, llvm

The Enzyme High-Performance Automatic Differentiator of LLVM

Enzyme is a plugin that performs automatic differentiation (AD) of statically analyzable LLVM.

Enzyme can be used by calling __enzyme_autodiff on a function to be differentiated as shown below. Running the Enzyme transformation pass then replaces the call to __enzyme_autodiff with the gradient of its first argument.

double foo(double);

double grad_foo(double x) {
    return __enzyme_autodiff(foo, x);
}

Enzyme is highly-efficient and its ability to perform AD on optimized code allows Enzyme to meet or exceed the performance of state-of-the-art AD tools.

Detailed information on installing and using Enzyme can be found on our website: https://enzyme.mit.edu.

A short example of how to install Enzyme is below:

cd /path/to/Enzyme/enzyme
mkdir build && cd build
cmake -G Ninja .. -DLLVM_DIR=/path/to/llvm/lib/cmake/llvm -DLLVM_EXTERNAL_LIT=/path/to/lit/lit.py
ninja

Or, install Enzyme using Homebrew:

brew install enzyme

To get involved or if you have questions, please join our mailing list.

If using this code in an academic setting, please cite the following:

@incollection{enzymeNeurips,
title = {Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradients},
author = {Moses, William S. and Churavy, Valentin},
booktitle = {Advances in Neural Information Processing Systems 33},
year = {2020},
note = {To appear in},
}

Julia bindings for Enzyme are available here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].