reactant
Science Score: 75.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
○Academic publication links
-
✓Committers with academic emails
6 of 65 committers (9.2%) from academic institutions -
✓Institutional organization owner
Organization enzymead has institutional domain (enzyme.mit.edu) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.9%) to scientific vocabulary
Keywords from Contributors
Repository
Basic Info
- Host: GitHub
- Owner: EnzymeAD
- License: other
- Language: LLVM
- Default Branch: main
- Size: 104 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 2
- Open Issues: 4
- Releases: 0
Metadata Files
Readme.md
Reactant
Enzyme is a plugin that performs automatic differentiation (AD) of statically analyzable LLVM and MLIR.
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.
```c
double foo(double);
double gradfoo(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 a package manager:
Homebrew
brew install enzyme
Spack
spack install enzyme
Nix
nix-shell -p 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 three papers (first for Enzyme as a whole, second for GPU+optimizations, and third for AD of all other parallel programs (OpenMP, MPI, Julia Tasks, etc.)):
@inproceedings{NEURIPS2020_9332c513,
author = {Moses, William and Churavy, Valentin},
booktitle = {Advances in Neural Information Processing Systems},
editor = {H. Larochelle and M. Ranzato and R. Hadsell and M. F. Balcan and H. Lin},
pages = {12472--12485},
publisher = {Curran Associates, Inc.},
title = {Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradients},
url = {https://proceedings.neurips.cc/paper/2020/file/9332c513ef44b682e9347822c2e457ac-Paper.pdf},
volume = {33},
year = {2020}
}
@inproceedings{10.1145/3458817.3476165,
author = {Moses, William S. and Churavy, Valentin and Paehler, Ludger and H\"{u}ckelheim, Jan and Narayanan, Sri Hari Krishna and Schanen, Michel and Doerfert, Johannes},
title = {Reverse-Mode Automatic Differentiation and Optimization of GPU Kernels via Enzyme},
year = {2021},
isbn = {9781450384421},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3458817.3476165},
doi = {10.1145/3458817.3476165},
booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis},
articleno = {61},
numpages = {16},
keywords = {CUDA, LLVM, ROCm, HPC, AD, GPU, automatic differentiation},
location = {St. Louis, Missouri},
series = {SC '21}
}
@inproceedings{10.5555/3571885.3571964,
author = {Moses, William S. and Narayanan, Sri Hari Krishna and Paehler, Ludger and Churavy, Valentin and Schanen, Michel and H\"{u}ckelheim, Jan and Doerfert, Johannes and Hovland, Paul},
title = {Scalable Automatic Differentiation of Multiple Parallel Paradigms through Compiler Augmentation},
year = {2022},
isbn = {9784665454445},
publisher = {IEEE Press},
booktitle = {Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis},
articleno = {60},
numpages = {18},
keywords = {automatic differentiation, tasks, OpenMP, compiler, Julia, parallel, Enzyme, C++, RAJA, hybrid parallelization, MPI, distributed, LLVM},
location = {Dallas, Texas},
series = {SC '22}
}
Both Julia bindings and Rust bindings are available for Enzyme.
Owner
- Name: Enzyme Automatic Differentiation Compiler
- Login: EnzymeAD
- Kind: organization
- Email: enzyme-dev@googlegroups.com
- Location: United States of America
- Website: https://enzyme.mit.edu
- Repositories: 13
- Profile: https://github.com/EnzymeAD
Citation (CITATION.bib)
@inproceedings{NEURIPS2020_9332c513,
author = {Moses, William and Churavy, Valentin},
booktitle = {Advances in Neural Information Processing Systems},
editor = {H. Larochelle and M. Ranzato and R. Hadsell and M. F. Balcan and H. Lin},
pages = {12472--12485},
publisher = {Curran Associates, Inc.},
title = {Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradients},
url = {https://proceedings.neurips.cc/paper/2020/file/9332c513ef44b682e9347822c2e457ac-Paper.pdf},
volume = {33},
year = {2020}
}
@inproceedings{10.1145/3458817.3476165,
author = {Moses, William S. and Churavy, Valentin and Paehler, Ludger and H\"{u}ckelheim, Jan and Narayanan, Sri Hari Krishna and Schanen, Michel and Doerfert, Johannes},
title = {Reverse-Mode Automatic Differentiation and Optimization of GPU Kernels via Enzyme},
year = {2021},
isbn = {9781450384421},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3458817.3476165},
doi = {10.1145/3458817.3476165},
booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis},
articleno = {61},
numpages = {16},
keywords = {CUDA, LLVM, ROCm, HPC, AD, GPU, automatic differentiation},
location = {St. Louis, Missouri},
series = {SC '21}
}
@inproceedings{10.5555/3571885.3571964,
author = {Moses, William S. and Narayanan, Sri Hari Krishna and Paehler, Ludger and Churavy, Valentin and Schanen, Michel and H\"{u}ckelheim, Jan and Doerfert, Johannes and Hovland, Paul},
title = {Scalable Automatic Differentiation of Multiple Parallel Paradigms through Compiler Augmentation},
year = {2022},
isbn = {9784665454445},
publisher = {IEEE Press},
booktitle = {Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis},
articleno = {60},
numpages = {18},
keywords = {automatic differentiation, tasks, OpenMP, compiler, Julia, parallel, Enzyme, C++, RAJA, hybrid parallelization, MPI, distributed, LLVM},
location = {Dallas, Texas},
series = {SC '22}
}
GitHub Events
Total
- Issue comment event: 2
- Push event: 9
- Pull request review event: 1
- Pull request event: 5
- Fork event: 1
- Create event: 2
Last Year
- Issue comment event: 2
- Push event: 9
- Pull request review event: 1
- Pull request event: 5
- Fork event: 1
- Create event: 2
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| William Moses | gh@w****m | 1,854 |
| Tim Gymnich | t****h@m****m | 207 |
| Manuel Drehwald | g****t@m****o | 98 |
| Valentin Churavy | v****y@g****m | 50 |
| Ludger Paehler | l****r@t****e | 34 |
| Oleksandr "Alex" Zinenko | z****o@g****m | 17 |
| Paul Berg | n****b@g****m | 13 |
| Ivan R. Ivanov | i****a@m****p | 8 |
| Jacob Mai Peng | j****g@g****m | 8 |
| dependabot[bot] | 4****] | 8 |
| Tim Kaler | t****k@m****u | 8 |
| Brant Qian | s****q@g****m | 7 |
| Ubuntu | u****u@i****l | 6 |
| Ubuntu | u****u@i****l | 6 |
| jumerckx | 3****x | 5 |
| Jesse Michel | j****l@m****u | 5 |
| Matt Bolitho | m****e@g****m | 5 |
| dan | t****2@g****m | 5 |
| Mo Tabbara | 1****a | 3 |
| Sam | s****h | 3 |
| Romain Moyard | r****d@g****m | 3 |
| Max Aehle | m****e@s****e | 3 |
| Martin Robinson | m****s@g****m | 3 |
| Carlo Cabrera | 3****b | 3 |
| Jordan Rupprecht | j****t@g****m | 2 |
| min xu | 1****s | 2 |
| Pratyush Das | r****s@g****m | 2 |
| Nicholas Wilson | t****r | 2 |
| Nestor Demeure | n****e@g****m | 2 |
| Michel Schanen | m****n@g****m | 2 |
| and 35 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 7 months ago
Dependencies
- actions/checkout v4 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- mattnotmitt/doxygen-action v1.12.0 composite
- wsmoses/action-deploy-scripts main composite
- actions/checkout v4 composite
- bazel-contrib/setup-bazel 0.14.0 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- actions/cache v4 composite
- actions/checkout v4 composite
- DoozyX/clang-format-lint-action v0.20 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- peter-evans/create-pull-request v7 composite
- tibdex/github-app-token v1 composite