Releases: SciCompKL/CoDiPack
Releases · SciCompKL/CoDiPack
Version 2.2.0
v 2.2.0 - 2024-01-30
-
Features:
- New helper for adding Enzyme-generated derivative functions to the tape. See \ref Example_24_Enzyme_external_function_helper.
- Recover primal values from primal values tapes in ExternalFunctionHelper.
- Forward AD type for CUDA kernels.
- Matrix matrix multiplications can now be handled in an optimal way with CoDiPack.
- Tagging tape for detecting errors in the AD workflow.
-
Bugfix:
- Uninitialized values in external function helper.
- External function outputs in Jacobian tapes no longer use unused indices.
-
Other:
- Added low level function support to the tapes.
Low level functions are between external functions and statements. As they can occur quite often, they reduce
the overhead for storing data as mutch as possible. - Added helper structures for creating low level functions.
- External functions are now handled via the low level function interface.
- Added low level function support to the tapes.
Version 2.1.0
v 2.1.0 - 2023-05-10
-
Features:
- Helpers for linear system solvers. See Example 21 for details.
- Event system. See Example 22 for details.
- Support for shared-memory parallel settings, specifically OpenMP.
- OpDiLib bindings.
- CMake support.
-
Bugfix:
- Initialization fixes.
- Initialization of passive values.
- Preaccumulation disables the tape during the algorithm.
- Proper assigning of 1st order derivatives to 2nd order derivatives.
- Proper reset of reuse index mangers.
- Swap of primal value tapes resizes primal value vectors.
- Tapes handle small chunk sizes correctly.
-
Other:
- Expression trait for the number of operations.
- Forward tape evaluation tests for primal value tapes.
- Gcc warning of no return statement is now an error.
- Make std::fmin and std::fmax available in namespace.
- clangd compatibility with CODI_IDE.
v2.0.2
v 2.0.2 - 2022-06-14
- Bugfix:
- Prevent copy constrution of tapes.
- Proper activity tracking for linear index tapes in MeDiPack.
v2.0.1
v 2.0.1 - 2021-11-15
- Bugfix:
- Fixed a stack corruption in the reverse interpretation of tapes with a linear index manager.
- Renamed folders aux -> misc for windows compatibility.
Version 2.0
- Complete rewrite of CoDiPack. See Migration from 1.9 to 2.0 for some migration help.
- Drop of modular class architecture.
- Iterators for expression trees.
- First support for aggregated types in external functions (e.g. std::complex). See Example 20 - Aggregated active type handling.
- Autocompletion of template arguments in IDEs. See Template declarations.
- Overhaul of tutorials and examples. See Tutorials & Examples.
Version 1.8.1
v1.8.1 Version 1.8.1
Version 1.9.3
- Bugfix:
- PreaccumulationHelper with changing sizes could give a segmentation fault
- PreaccumulationHelper with changing zero patterns gave wrong results
- Dirty adjoint vector after computeJacobian call in Algorithms with a forward evaluation
Version 1.9.2
- Core functionality:
- Support for remainder and round function.
- MeDiPack bindings:
- Updated MeDiPack bindings to MeDiPack 1.2 (not backwards compatible).
- MSVC compatibility:
- Renaming interface -> inter.
v1.9.1
- Bugfix:
- Missing declaration of MaxDerivativeOrder in UnaryOp type traits.
Version 1.9
- Helper structures:
- EvaluationHelper:
- Simplifies the computation of Jacobian and Hessian matrices for functions, function objects and lambda functions.
Only the function needs to be provided and the helper will compute all derivatives. - See Tutorial B1, B1.1 and B1.2.
- Simplifies the computation of Jacobian and Hessian matrices for functions, function objects and lambda functions.
- TapeHelper:
- Provides a more convenient handling of the tape recording and derivative computation process. All CoDiPack
specifics are hidden and the user can compute the full Jacobian or Hessian matrix with a simple function call. - See Tutorial B2
- Provides a more convenient handling of the tape recording and derivative computation process. All CoDiPack
- EvaluationHelper:
- Expression rework:
- Binary and unary expressions are now defined via logic objects that provide the derivative and primal evaluation
functions. - Users can now change the derivative logic for custom types by the specialization of these logic objects.
- Binary and unary expressions are now defined via logic objects that provide the derivative and primal evaluation
- Test suite:
- The test suite checks now also primal and second order derivatives.
- Bugfix:
- Overflow check for linear index handlers