Description of the project: Enzyme performs automatic differentiation (in the calculus sense) of LLVM programs. This enables users to use Enzyme to perform various algorithms such as back-propagation in ML or scientific simulation on existing code for any language that lowers to LLVM.
The support for an increasing number of LLVM Versions (7-main), AD modes (Reverse, Forward, Forward-Vector, Reverse-Vector, Jacobian), and libraries (BLAS, OpenMP, MPI, CUDA, ROCm, …) leads to a steadily increasing code base. In order to limit complexity and help new contributors we would like to express our core logic using LLVM Tablegen. The applicant is free to decide how to best map the program transformation abstractions within Enzyme to Tablegen
A working tablegen rule generation system within Enzyme
Moving several existing rules to the new autogenerated system (e.g. LLVM instructions, LLVM intrinsics, BLAS calls, MPI calls, …)
Desirable skills: Good knowledge of C++, calculus, and LLVM and/or Clang, and/or MLIR internals. Experience with Tablegen, Enzyme or automatic differentiation would be nice, but can also be learned in the project.
Hi, This project sounds interesting. During my time in undergrad and grad school, I majored in Applied Math and had lots of exposure to machine learning. I was wondering if you are still looking for people to help out on your open source project and what are some major projects that need to be worked on.
Hi @wu-s-john@PragmaTwice, we do!
Please excuse the delay, I didn’t subscribe to this proposal from last year.
Please feel free to dm me if you already have something more specific in mind,
otherwise I’ll send you list of possible tasks tomorrow morning.