Major Features
-
Re::Solve now works reliably with asymmetric matrices, with no need for intermediate CSC storage.
This requires switching$L$ with$U$ and$P$ with$Q$ and reinterpretting them as CSR instead of CSC.
It is seamless from the user perspective and fixed many bugs. -
Significant improvements to documentation and instructions inside and outside the code. Added general API description, including details on memory space synchronization.
-
Added more rigorous checks for PRs for clang formatting and to compile without warnings and memory leaks.
-
Updated pull request and issue templates.
Bug Fixes
-
Fixed a bug that produced inaccurate results for some asymmetric matrices with major feature 1.
-
Synchronized devices after HIP functions. HIP executes asynchronously, so bugs occured without synchronization.
-
Corrected the way cmake finds suitsparse.
-
Fixed various memory leaks and compiler warnings.
Minor Features and Enhancements
-
Changed all examples and tests to use Csr format, added uniform command line parsers (no longer hard-coded), and decluttered them.
-
Added asymmetric matrices and well-conditioned matrices to the test suite.
-
Removed RocSparse "fast mode" triangular solver and use RocSolver triangular solver only as it is now faster and removes dependencies.
-
Put sorting inside the KLU extraction because many solvers assume sorted factors and there's no need to reimplement sorting constantly.
-
Removed duplicate code, added code comments, corrected code to fit guidelines, removed magic numbers, and simplified code where possible.
-
Added the ability to reset a workspace without completely destroying it.
-
Improved testing and added tests where they were missing.
-
Added kernels for multiplying a vector by a diagonal matrix and a general matrix by a diagonal matrix (left and right).
-
Prohibitted sloppy memory syncing and added more descriptive error messages when a prohibited action is attempted.
-
The code now tracks the updated status for each vector in a multivector.
-
Added the ability to reuse a transpose allocation.
-
Added the ability to generically set solver parameters.
-
Added LUSOL direct solver, which can factorize matrices and extract factors independently of KLU.
-
Various Spack updates.