Lapack {or,un}mqr#2962
Conversation
|
Looks good! Did you try our new tool or did you do this all by hand? |
There was a problem hiding this comment.
Pull request overview
This PR implements KokkosLapack::mqr — the {or,un}mqr operation that applies the Q factor from a prior QR decomposition (geqrf) to a matrix C. It is a follow-on to PR #2858 (which added geqrf) and supersedes PR #1165. Only TPL wrappers are provided (LAPACK/Accelerate, cuSOLVER, and rocSOLVER); no fallback Kokkos-native implementation is included. The PR also contains several unrelated cleanup changes in BLAS and sparse TPL layers (hardcoding Kokkos::HIP in rocBLAS/rocSPARSE specializations, removing unused offset_type).
Changes:
- New
KokkosLapack::mqrAPI with LAPACK, cuSOLVER, and rocSOLVER TPL specializations - New
side_mode_kk_to_cublasandside_mode_kk_to_rocblashelper functions in the BLAS TPL layer - Cleanup in BLAS/sparse rocBLAS/rocSPARSE specializations (hardcode
Kokkos::HIP, remove unused variables, remove trailing semicolons from macro instantiations)
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
lapack/src/KokkosLapack_mqr.hpp |
Public API header for the new mqr function |
lapack/impl/KokkosLapack_mqr_spec.hpp |
ETI specialization declarations and fallback stub for mqr |
lapack/impl/KokkosLapack_mqr_impl.hpp |
Empty implementation placeholder for future Kokkos-native mqr |
lapack/tpls/KokkosLapack_mqr_tpl_spec_avail.hpp |
TPL availability traits for mqr (LAPACK, cuSOLVER, rocSOLVER) |
lapack/tpls/KokkosLapack_mqr_tpl_spec_decl.hpp |
Full TPL specializations for mqr (LAPACK, cuSOLVER, rocSOLVER) |
lapack/tpls/KokkosLapack_Host_tpl.hpp |
Declaration of HostLapack<T>::mqr interface |
lapack/tpls/KokkosLapack_Host_tpl.cpp |
Fortran declarations and implementations for {or,un}mqr |
lapack/unit_test/Test_Lapack_mqr.hpp |
New unit tests for mqr |
lapack/unit_test/Test_Lapack_geqrf.hpp |
Updated getQR signature; copyright header modernized |
lapack/unit_test/Test_Lapack.hpp |
Include Test_Lapack_mqr.hpp |
lapack/CMakeLists.txt |
ETI generation for mqr |
lapack/eti/... |
ETI template files for mqr |
scripts/check_api_updates.py |
Register KokkosLapack_mqr.hpp → mqr.rst mapping |
blas/tpls/KokkosBlas_tpl_spec.hpp |
New side_mode_kk_to_cublas and side_mode_kk_to_rocblas helpers |
blas/tpls/KokkosBlas3_gemm_tpl_spec_decl.hpp |
Hardcode Kokkos::HIP in rocBLAS GEMM specializations |
blas/tpls/KokkosBlas3_gemm_tpl_spec_avail.hpp |
Hardcode Kokkos::HIP in rocBLAS GEMM availability traits |
blas/tpls/KokkosBlas2_gemv_tpl_spec_decl.hpp |
Hardcode Kokkos::HIP in rocBLAS GEMV specializations |
blas/tpls/KokkosBlas2_gemv_tpl_spec_avail.hpp |
Hardcode Kokkos::HIP in rocBLAS GEMV availability traits |
sparse/tpls/KokkosSparse_spmv_bsrmatrix_tpl_spec_decl.hpp |
Remove semicolons from macro instantiations |
sparse/tpls/KokkosSparse_spmv_sellmatrix_tpl_spec_decl.hpp |
Remove unused offset_type variable |
lapack/unit_test/Test_Lapack_svd.hpp |
Fix stale comment: "device side" → "host side" |
lapack/src/KokkosLapack_geqrf.hpp |
Copyright header modernized |
| Multiple geqrf/lapack files | Copyright header modernized (old NTESS header → SPDX) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The mqr algorithms provide the multiplication operator for orthonormal/unitary matrices Q computed with a QR factorization. TPL support for Host, Cuda and HIP. Signed-off-by: Luc Berger-Vergiat <[email protected]>
|
@jgfouca @brian-kelley this is finally ready for some more review! : ) |
Signed-off-by: Luc Berger-Vergiat <[email protected]>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 10 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: Luc Berger-Vergiat <[email protected]>
Signed-off-by: Luc Berger-Vergiat <[email protected]>
|
@jgfouca the copilot comments have been addressed |
Implementing {or,un}mqr as a follow on PR to #2858 this will also supersede #1165
This PR only proposes wrappers to the TPLs although we may decide to implement it later on