English

DiffSharp: An AD Library for .NET Languages

Mathematical Software 2016-11-11 v1 Machine Learning

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. Work on a CUDA-based GPU backend is also underway.

Keywords

Cite

@article{arxiv.1611.03423,
  title  = {DiffSharp: An AD Library for .NET Languages},
  author = {Atılım Güneş Baydin and Barak A. Pearlmutter and Jeffrey Mark Siskind},
  journal= {arXiv preprint arXiv:1611.03423},
  year   = {2016}
}

Comments

Extended abstract presented at the AD 2016 Conference, Sep 2016, Oxford UK

R2 v1 2026-06-22T16:48:35.318Z