diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index f77e9eb5c..979123f57 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -30,7 +30,7 @@ - [ ] There are unit tests for the new code. - [ ] The new code is documented. - [ ] The feature branch is rebased with respect to the target branch. - +- [ ] I have updated [CHANGELOG.md](/CHANGELOG.md) to reflect the changes in this PR. If this is a minor PR that is part of a larger fix already included in the file, state so. ## Further comments diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..40f089eaa --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,53 @@ +# Re::Solve Changelog + +## Changes to Re::Solve in release 0.99.2 + +### Major Features + +1. 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. + +2. Added more rigorous checks for PRs for clang formatting and to compile without warnings and memory leaks. + +3. Updated pull request and issue templates. + +### Bug Fixes + +1. Fixed a bug that produced inaccurate results for some asymmetric matrices with major feature 1. + +2. Synchronized devices after HIP functions. HIP executes asynchronously, so bugs occured wihout synchronization. + +3. Corrected the way cmake finds suitsparse. + +4. Fixed various memory leaks and compiler warnings. + +### Minor Features and Enhancements + +1. Changed all examples and tests to use Csr format, added uniform command line parsers (no longer hard-coded), and decluttered them. + +2. Added asymmetric matrices and well-conditioned matrices to the test suite. + +3. Removed RocSparse "fast mode" triangular solver and use RocSolver triangular solver only as it is now faster and removes dependencies. + +4. Put sorting inside the KLU extraction because many solvers assume sorted factors and there's no need to reimplement sorting constantly. + +5. Removed duplicate code, added code comments, corrected code to fit guidelines, removed magic numbers, and simplified code where possible. + +6. Added the ability to reset a workspace without completely destroying it. + +7. Improved testing and added tests where they were missing. + +8. Added kernels for multiplying a vector by a diagonal matrix and a general matrix by a diagonal matrix (left and right). + +9. Prohibitted sloppy memory syncing and added more descriptive error messages when a prohibited action is attempted. + +10. The code now tracks the updated status for each vector in a multivector. + +11. Added the ability to reuse a transpose allocation. + +12. Added the ability to generically set solver parameters. + +13. Added LUSOL direct solver, which can factorize matrices and extract factors independently of KLU. + +14. Various Spack updates.