Hi there @wsmoses and friends,
Thanks for the new easy rule system! Making rules more accessible is a great idea to get more people into autodiff (that’s how I got hooked in the first place).
I’m curious to understand how it works for functions with vector inputs and outputs, especially when their size may be large:
- Does everything have to be stored in tuples of tuples? Will it strain the compiler if people (programmatically) define tuples with a million elements because their arrays have that size?
- If the user only specifies the equivalent of a Jacobian matrix, how does Enzyme internally generate efficient JVPs and VJPs that don’t require materializing the full matrix?
Thanks again!