C++ interface TODO list
- 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
Assessment
This issue has not been assessed yet.