Implement the HyKKT Cholesky module#350
Conversation
339fb5c to
b5f357d
Compare
dcceadf to
9c471ea
Compare
| if(RESOLVE_USE_KLU) | ||
| add_subdirectory(hykkt) | ||
| endif() | ||
| #list(APPEND ReSolve_Targets_List resolve_hykkt) |
There was a problem hiding this comment.
Why are we removing this from the list of targets?
There was a problem hiding this comment.
resolve_hykkt is the target for only the Permutation class. This is a holdover from your original commit of the Permutation class. The name hasn't been changed and needs to be. The other hykkt modules are named resolve_hykkt_ruiz, etc. But it appears adding it to the list of targets is redundant if the subdirectory is added.
Co-authored-by: Shaked Regev <35384901+shakedregev@users.noreply.github.com>
shakedregev
left a comment
There was a problem hiding this comment.
CUDA and CPU tests pass. Approved, pending documentation change requests.
HIP is not working because as far as we can tell their Cholesky solver does not work (verified with @kswirydo from AMD). We will need to add a separate test for HIP once we figure out what is going on with their Cholesky solver.
|
We are investigating the issue on AMD GPUs. I got the same failure for identity matrix too ... |
* initial solver and cuda header * cuda implementation * minimal test on cuda passes * cpu implementation * tell cmake to find cholmod * add template hip implementation * dependencies * cpu: memory freeing and unused fields * Apply pre-commmit fixes * error handling and correct memory in cuda * randomized testing: different sparsity patterns * Apply pre-commmit fixes * fix for cuda: resetting workspace * Apply pre-commmit fixes * test reusing sparsity pattern * Apply pre-commmit fixes * Apply pre-commmit fixes * draft: rocsolver * Apply pre-commmit fixes * fix build issue * documentation * Apply pre-commmit fixes * error message when no gpu support Co-authored-by: Shaked Regev <35384901+shakedregev@users.noreply.github.com> * address minor review comments * Apply pre-commmit fixes * remove commented code * more detail on documentation * Apply pre-commmit fixes --------- Co-authored-by: adhamsi <adhamsi@users.noreply.github.com> Co-authored-by: Shaked Regev <35384901+shakedregev@users.noreply.github.com>
* Added the permutation class from hykkt, along with tests. * Implement HyKKT Ruiz Scaling (#317) * Implement the HyKKT Cholesky module (#350) * SpGEMM for HyKKT (#366) --------- Co-authored-by: superwhiskers <whiskerdev@protonmail.com> Co-authored-by: Nicholson Koukpaizan <72402802+nkoukpaizan@users.noreply.github.com> Co-authored-by: Adham Ibrahim <adham.ibrahim@princeton.edu> Co-authored-by: kswirydo <kasia.swirydowicz@gmail.com> Co-authored-by: shakedregev <shakedregev@users.noreply.github.com> Co-authored-by: Slaven Peles <peless@ornl.gov>
Description
This implements the Cholesky factorization module, one of the five HyKKT modules. The module supports computing the symbolic and numeric factorization of a sparse positive definite matrix (the H_gamma matrix from the HyKKT paper), and updating the nonzeros of the matrix and reusing the symbolic factorization. The module then provides a
solve(vector::Vector* x, vector::Vector* b)function.Closes #311
Proposed changes
cusolver.cholmod_sparsetype, which is an inideal solution, but acceptable given that the CPU implementation is primarily for correctness and comparison to GPU implementations.rocsolverlibrary refactorization and triangular solve functions.Checklist
-Wall -Wpedantic -Wconversion -Wextra.