EnzymeAD / EnzymeAD/Enzyme

C++ interface TODO list

Open
#2,012 17 comments 0 reactions 0 assignees View on GitHub
Dominant language
LLVM
Stars
1.7k
Forks
188
Avg merge
2d 4h
Merged PRs (30d)
22

Description

I'm writing this issue to capture some of the ideas mentioned in a private discussion with @wsmoses about the future C++ interface. I'm hoping that this will increase visibility and allow other contributors to weigh in with design suggestions and considerations, as well as track progress on these topics.

-------

1. ~(fix WIP) Address an issue where C++ functions that return composite types by-value are mishandled after `sret` transformations (and produce error messages that report the functions return `void`). This has been observed in some larger projects, but still needs a minimal reproducer.~
edit: fixed by https://github.com/EnzymeAD/Enzyme/pull/2051

2. Add a `make_zero` function for basic types (and allow users to specialize it for custom types), in order to better support differentiation over custom containers.

3. Add higher-level tools for Jacobian, Hessian, JVP, VJP, HVP (actual interface still TBD, maybe look to Julia implementation for inspiration here?)

4. Support for batch-duplicated arguments (what container / layout should be used to pass the batch?)

5. Custom Derivative rule interface (likely also requires some effort in front end)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.