 |
A combined automatic differentiation and array library for C++
|
Download
Adept has been developed on Linux using the GNU C++ compiler, and
tested with the Clang, Intel and (on Windows) Microsoft
compilers. Since most of the difficulty in compiling on other
platforms (particularly Windows) arises from building and linking to a
dynamic library, there is a "library-free" option described in
the User Guide.
Version 2: Automatic differentiation and array capability
- Latest snapshot: Available
on GitHub
- Version 2.1.1 (latest stable version): adept-2.1.1.tar.gz
(10 April 2022) - User Guide (PDF)
- 1D interpolation can act on 2D arrays
- Bug fix in differentiation of some reduction operations
- Version 2.1: adept-2.1.tar.gz
(5 February 2021)
- L-BFGS and Conjugate-Gradient minimization algorithms (bounded
and unbounded)
- Version 2.0.8: adept-2.0.8.tar.gz
(22 August 2020)
- AVX512 and ARM NEON vectorization
- Ability to exchange arrays between C++ Adept and Fortran via the
Fortran 2018 standard
- Optimization capability: Levenberg and Levenberg-Marquardt
minimization algorithms
- Version 2.0.5: adept-2.0.5.tar.gz
(6 February 2018)
- Fixed compile problem with older versions of Clang
- More control of the format of arrays written to a stream
- Version 2.0.4: adept-2.0.4.tar.gz
(8 January 2018)
- Fixed several bugs and memory leaks
- Version 2.0.3: adept-2.0.3.tar.gz (30
October 2017)
- Works with Clang, Intel and Microsoft compilers, in addition to
GNU compiler
- Vectorized passive sqrt, min, max and reduce
operations (sum, mean etc.)
- Version 2.0: adept-2.0.gz (1
October 2017)
- Fixed pausable recording and library-free compilation to provide
full backwards compatibility with version 1.1
- C++11 features such as initializer lists
- Automatic vectorization of passive array statements if possible
- Additional mathematical
functions: round, trunc, rint, nearbyint,
atan2, fmin, fmax
- Additional array
operations: spread, outer_product, count, maxval,
minval, reshape
- Many more test programs
- Version 1.9.8: adept-1.9.8.tar.gz
(10 April 2016)
- Added FixedArray class for arrays whose dimensions are
known at compile time.
- Added bounds checking option by
defining ADEPT_BOUNDS_CHECKING
- Any BLAS and LAPACK library may be used, rather than just OpenBLAS.
- Version 1.9.4: adept-1.9.4.tar.gz (27
January 2016).
- First release after major rewrite to combine automatic
differentiation and array functionality into a single library.
Version 1: Automatic differentiation capability only
If you are not interested in array features then version 1.1 may be
a preferable option to version 2.0 since it has virtually the same
automatic differentiation capability and is more lightweight.
- Latest snapshot: Available
on GitHub
- Version 1.1 (latest stable
version): adept-1.1.tar.gz
(3 June 2015)
- User
Guide (PDF)
- Changed license from GNU General Public License to the more
permissive Apache
License, Version 2.0. Users are permitted to use instead the
ESA Software Community License Type 1, if they prefer.
- Build system now uses
an autotools-generated configure
script.
- Support for additional mathematical functions: asinh,
acosh, atanh, expm1, log1p, cbrt,
erf, erfc, exp2 and log2.
- Jacobian calculation can use OpenMP parallelization.
- Windows support via the capability to compile code to be
differentiated without the need to link to an external library.
- More test programs and a benchmarking tool.
- Version 1.0: adept-1.0.tar.gz (3
September 2013)
- LIFO requirement removed in allocation of active objects in
memory: more efficient for codes that don't deallocate objects in
the reverse order from their allocation.
- Interface change: independent variables no longer need to be
initialized using set_value; they can now be initialized
using the ordinary assignment operator (=) provided that
the new_recording function is called immediately after
they are initialized (see section 5.2 of the User Guide).
- Ability to interface to code components that compute their own
Jacobian (e.g. those written in Fortran).
- More test programs, including one that interfaces to
the GNU Scientific
Library to perform a real minimization.
- C++ exceptions are thrown when an error occurs.
- Recording of derivative information can be "paused" so that the
same function can be called from within the program both with and
without automatic differentiation.
- Source code can be compiled twice to produce two versions of a
function, one with automatic differentiation and one without.
- Version 0.9: adept-0.9.tar.gz
(2 May 2012).

|