DiffSharp: An AD Library for .NET Languages
At{\i}l{\i}m G\"une\c{s} Baydin, Barak A. Pearlmutter, Jeffrey, Mark Siskind

TL;DR
DiffSharp is a .NET library for automatic differentiation designed for machine learning, offering high-performance linear algebra, support for higher-order functions, and plans for GPU acceleration.
Contribution
It introduces a flexible AD library for .NET languages with high-performance primitives and plans for GPU support, enhancing machine learning development in this ecosystem.
Findings
Supports forward and reverse AD as nestable higher-order functions
Provides optimized linear algebra primitives with BLAS/LAPACK backend
Developing GPU backend for accelerated computations
Abstract
DiffSharp is an algorithmic differentiation or automatic differentiation (AD) library for the .NET ecosystem, which is targeted by the C# and F# languages, among others. The library has been designed with machine learning applications in mind, allowing very succinct implementations of models and optimization routines. DiffSharp is implemented in F# and exposes forward and reverse AD operators as general nestable higher-order functions, usable by any .NET language. It provides high-performance linear algebra primitives---scalars, vectors, and matrices, with a generalization to tensors underway---that are fully supported by all the AD operators, and which use a BLAS/LAPACK backend via the highly optimized OpenBLAS library. DiffSharp currently uses operator overloading, but we are developing a transformation-based version of the library using F#'s "code quotation" metaprogramming facility.…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
