Mikolaj / horde-ad

Higher Order Reverse Derivatives Efficiently - Automatic Differentiation library based on the paper "Provably correct, asymptotically efficient, higher-order reverse-mode automatic differentiation"
BSD 3-Clause "New" or "Revised" License
34 stars 6 forks source link

Add an untyped ArrayFire backend and benchmark it vs hmatrix #71

Open Mikolaj opened 2 years ago

Mikolaj commented 2 years ago

See #43. The idea is to map the ArrayFire arrays to untyped orthotope tensors in the Domains and related types. For this early experiment, we can leave optimizers unchanged and using hmatrix in each case.

The benchmark would have variants using sequential hmatrix and parallel hmatrix (via flags read by the C/Fortran libraries) on CPU would also run the same ArrayFire-based code on GPU.

Eventually we'd prefer our code to be backend-independent, but that would require a general enough common representation. This may turn out to be ArrayFire, MLIR or something custom and higher level than MLIR. For now let's experiment with backends explicitly.