DiffSharp Versions Save

DiffSharp: Differentiable Functional Programming

v0.7.4

8 years ago
  • Improved: Overall performance improvements with parallelization and memory reshaping in OpenBLAS backend
  • Fixed: Bug fixes in reverse AD Make_DM_ofDV and DV.Append
  • Fixed: Bug fixes in DM operations map2Cols, map2Rows, mapi2Cols, mapi2Rows
  • Added: New operation primalDeep for the deepest primal value in nested AD values

v0.7.3

8 years ago
  • Fixed: Bug fix in DM.Min
  • Added: Mean, Variance, StandardDev, Normalize, and Standardize functions
  • Added: Support for visualizations with configurable Unicode/ASCII palette and contrast

v0.7.2

8 years ago
  • Added: Fast reshape operations ReshapeCopy_DV_DM and ReshapeCopy_DM_DV

v0.7.1

8 years ago
  • Fixed: Bug fixes for reverse AD Abs, Sign, Floor, Ceil, Round, DV.AddSubVector, Make_DM_ofDs, Mul_Out_V_V, Mul_DVCons_D
  • Added: New methods DV.isEmpty and DM.isEmpty

v0.7.0

8 years ago

Version 0.7.0 is a reimplementation of the library with support for linear algebra primitives, BLAS/LAPACK, 32- and 64-bit precision and different CPU/GPU backends

  • Changed: Namespaces have been reorganized and simplified. This is a breaking change. There is now just one AD implementation, under DiffSharp.AD (with DiffSharp.AD.Float32 and DiffSharp.AD.Float64 variants, see below). This internally makes use of forward or reverse AD as needed.
  • Added: Support for 32 bit (single precision) and 64 bit (double precision) floating point operations. All modules have Float32 and Float64 versions providing the same functionality with the specified precision. 32 bit floating point operations are significantly faster (as much as twice as fast) on many current systems.
  • Added: DiffSharp now uses the OpenBLAS library by default for linear algebra operations. The AD operations with the types D for scalars, DV for vectors, and DM for matrices use the underlying linear algebra backend for highly optimized native BLAS and LAPACK operations. For non-BLAS operations (such as Hadamard products and matrix transpose), parallel implementations in managed code are used. All operations with the D, DV, and DM types support forward and reverse nested AD up to any level. This also paves the way for GPU backends (CUDA/CuBLAS) which will be introduced in following releases. Please see the documentation and API reference for information about how to use the D, DV, and DM types. (Deprecated: The FsAlg generic linear algebra library and the Vector<'T> and Matrix<'T> types are no longer used.)
  • Fixed: Reverse mode AD has been reimplemented in a tail-recursive way for better performance and preventing StackOverflow exceptions encountered in previous versions.
  • Changed: The library now uses F# 4.0 (FSharp.Core 4.4.0.0).
  • Changed: The library is now 64 bit only, meaning that users should set "x64" as the platform target for all build configurations.
  • Fixed: Overall bug fixes.

v0.6.3

8 years ago
  • Fixed: Bug fix in DiffSharp.AD subtraction operation between D and DF

v0.6.2

8 years ago
  • Changed: Update FsAlg to 0.5.8

v0.6.1

8 years ago
  • Added: Support for C#, through the new DiffSharp.Interop namespace
  • Added: Support for casting AD types to int
  • Changed: Update FsAlg to 0.5.6
  • Improved: Documentation updates

v0.6.0

9 years ago
  • Changed: DiffSharp is now released under the LGPL license, allowing use (as a dynamically linked library) in closed-source projects and open-source projects under non-GPL licenses
  • Added: Nesting support. The modules DiffSharp.AD, DiffSharp.AD.Forward and DiffSharp.AD.Reverse are now the main components of the library, providing support for nested AD operations.
  • Changed: The library now uses the FsAlg linear algebra library for handling vector and matrix operations and interfaces
  • Changed: All AD-enabled numeric types in the library are now called D
  • Changed: The non-nested modules DiffSharp.AD.Forward, DiffSharp.AD.Forward2, DiffSharp.AD.ForwardG, DiffSharp.AD.ForwardGH, DiffSharp.AD.ForwardN, DiffSharp.AD.Reverse are now called DiffSharp.AD.Specialized.Forward1, DiffSharp.AD.Specialized.Forward2, DiffSharp.AD.Specialized.ForwardG, DiffSharp.AD.Specialized.ForwardGH, DiffSharp.AD.Specialized.ForwardN, DiffSharp.AD.Specialized.Reverse1
  • Improved: The non-nested DiffSharp.AD.Specialized.Reverse1 module is reimplemented from scratch, not requiring a stack
  • Removed: The non-nested DiffSharp.AD.ForwardReverse module is removed. This functionality is now handled by the nested modules.
  • Improved: Major rewrite of documentation and examples, to reflect changed library structure
  • Improved: Updated benchmarks

v0.5.10

9 years ago
  • Improved: Improvements in the DiffSharp.Util.LinearAlgebra module
  • Changed: Minor changes in the internal API, such as dualSet -> dualPT, dualAct -> dualP1