SUNDIALS development release v5.0.0-dev.2
Pre-releaseChanges to SUNDIALS in release 5.0.0-dev.2
Added a new optional operation to the SUNLINEARSOLVER API, SUNLinSolGetID
,
that returns a SUNLinearSolver_ID
for identifying the linear solver module.
Made performance improvements to the CUDA NVECTOR. Users who utilize a non
-default stream should no longer see default stream synchronizations after
memory transfers.
Added a new constructor to the CUDA NVECTOR that allows a user to provide
custom allocate and free functions for the vector data array and internal
reduction buffer.
Increased the minimum required CMake version to 3.5 for most SUNDIALS configurations,
and 3.10 when CUDA or OpenMP with device offloading are enabled.
The CMake option BLAS_ENABLE
and the variable BLAS_LIBRARIES
have been
removed to simplify builds as SUNDIALS packages do not use BLAS directly. For
third party libraries that require linking to BLAS, the path to the BLAS
library should be included in the _LIBRARIES
variable for the third party
library e.g., SUPERLUDIST_LIBRARIES
when enabling SuperLU_DIST.
Fixed a bug in the ARKStep time-stepping module in ARKode that would result in an
infinite loop if the nonlinear solver failed to converge more than the maximum
allowed times during a single step.
Added functions to get the current state and gamma value to CVODE(S) and ARKode.
These functions may be useful to users who chose to provide their own nonlinear
solver implementation.
Add two new 'Set' functions to MRIStep, MRIStepSetPreInnerFn()
and
MRIStepSetPostInnerFn()
for performing communication or memory
transfers needed before or after the inner integration.
The reinitialization functions ERKStepReInit()
, ARKStepReInit()
, and
MRIStepReInit()
have been updated to retain the minimum and maxiumum step
size values from before reinitialization rather than resetting them to the
default values.
Added a new SUNLinearSolver implementation, SUNLinearSolver_cuSolverSp_batchQR
,
which leverages the NVIDIA cuSOLVER sparse batched QR method for efficiently
solving block diagonal linear systems on NVIDIA GPUs.
Added three new accessor functions to the SUNLinSol_KLU module,
SUNLinSol_KLUGetSymbolic()
, SUNLinSol_KLUGetNumeric()
, and
SUNLinSol_KLUGetCommon()
, to provide user access to the underlying
KLU solver structures.
A bug was fixed in the IDA(S) linear solver interface where an incorrect
Jacobian-vector product increment was used with iterative solvers other than
SPGMR and SPFGMR.
Fixed a bug in the CVODE(S) nonlinear solver interface where the norm of the
accumulated correction was not updated when using a non-default convergence
test function.