EnzymeAD / oxide-enzyme

Enzyme integration into Rust. Experimental, do not use.
Apache License 2.0
102 stars 4 forks source link

Adding a new wrapper for more than two enzyme ret args #8

Closed ZuseZ4 closed 2 years ago

ZuseZ4 commented 2 years ago

Removes a major limitation for reverse-mode AD. Not sure how it will interact with the incoming forward-mode ad.

ZuseZ4 commented 2 years ago

While testing the new wrapper it turned out the invocation of any of the two wrappers will cause linking issues. We had fixed that on LLVM level in the past, so let's check why it's not working anymore:

(base) ➜  example git:(wrapper) ✗ nm -C target/x86_64-unknown-linux-gnu/debug/build/example-8cd4b0a98014ff20/out/libGradFunc.a | grep "mult"  
00000000000d9890 t inner_multi_args4
                 U multi_args4
00000000000d9960 t multi_args4.2
(base) ➜  example git:(wrapper) ✗ nm -C target/x86_64-unknown-linux-gnu/debug/build/example-8cd4b0a98014ff20/out/libGradFunc.a | grep "enzyme"
                 U enzyme3
00000000000d9950 t enzyme3.1
00000000000d9710 t inner_enzyme3