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.
@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