Add hipSOLVER checklist tests (geqrf, orgqr/ungqr, potrs, syevj, gesvdj) - #468
Draft
Ozone-Whiskey wants to merge 2 commits into
Draft
Add hipSOLVER checklist tests (geqrf, orgqr/ungqr, potrs, syevj, gesvdj)#468Ozone-Whiskey wants to merge 2 commits into
Ozone-Whiskey wants to merge 2 commits into
Conversation
amontoison
requested changes
Aug 6, 2026
amontoison
left a comment
Collaborator
There was a problem hiding this comment.
Use .f08 extension for files in f2008/hipsolver.
Excellent work!
For the product with Q, Q', we could also check that ||C||_2 = ||op(Q) * C||_2.
3 tasks
Ozone-Whiskey
force-pushed
the
hipsolver-checklist-tests
branch
from
August 6, 2026 06:52
f19e8b3 to
883fbfc
Compare
…z, f2003 + f2008)
…, f2003 + f2008) Verify orthogonality/unitarity of Q by checking that applying Q to C preserves the Frobenius norm: ||op(Q)*C||_F = ||C||_F. Q is obtained as Householder vectors from geqrf, then applied with ormqr (real) / unmqr (complex). Norm preservation is phase-convention independent, so no reference matrix is required.
Ozone-Whiskey
force-pushed
the
hipsolver-checklist-tests
branch
from
August 6, 2026 22:36
883fbfc to
43d4c0b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds s/d/c/z tests for the hipSOLVER routine groups on the "most important routines to test" checklist in #411, in both the Fortran 2003 and Fortran 2008 binding tiers.
Routines covered (18 total, f2003 + f2008 each = 36 new test programs):
SgeqrfDgeqrfCgeqrfZgeqrfSorgqrDorgqrCungqrZungqrSpotrsDpotrsCpotrsZpotrsSsyevjDsyevjSgesvdjDgesvdjCgesvdjZgesvdjEach routine is one commit (f2003 + f2008 pair + CMake registration).
Verification approach
Every test is self-verifying against a fixed small input, using a check robust to sign/phase/ordering ambiguity where relevant:
All use the hipSOLVER workspace pattern (
_bufferSizequery + explicitdWork, create/destroy handle, and syevjInfo/gesvdjInfo params objects for the Jacobi routines).Not included (blocked)
Two hipSOLVER checklist items could not be tested and are intentionally left out:
?getri— not present in the hipfort bindings at all (nohipsolver?getriinterface is generated), so there is nothing to test.?potrfBatched— the generated binding declares the batched pointer-array argumentAastype(c_ptr)(by reference) rather thantype(c_ptr), value. The C API isT* A[](aT**passed by value), so every call faults at the next device sync with HIP error 700. Verified against the C header and confirmed that a corrected by-value interface works. This is a generator issue and should be fixed there; the test can be added once the binding is corrected.Notes
syevj/gesvdjhave no generated array-pointer overload, so their f2008 tests pass device pointers viac_loc(...)to the generic interface; the other groups use the array-pointer form.Part of #411.
Test plan