Skip to content

Separate Algorithm and Driver#178

Open
lkdvos wants to merge 14 commits intomainfrom
ld-algmerge
Open

Separate Algorithm and Driver#178
lkdvos wants to merge 14 commits intomainfrom
ld-algmerge

Conversation

@lkdvos
Copy link
Member

@lkdvos lkdvos commented Feb 26, 2026

This is a start for tackling #176, while refactoring some of the QR/LQ implementation to share more code between the different backends -> drivers.

As usual, to keep this somewhat contained I only looked at QR/LQ decompositions to allow for some discussion first.
The next steps would be to include the SVD and eigenvalue decompositions in a similar manner.

From what I can tell, I managed to implement this in a non-breaking way, deprecating the previous *_Householder* structs without removing them.

@lkdvos lkdvos force-pushed the ld-algmerge branch 2 times, most recently from d8adb73 to 6a2bd16 Compare February 27, 2026 16:23
@lkdvos lkdvos requested review from Jutho and kshyatt February 27, 2026 16:23
Copy link
Member

@Jutho Jutho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good. Does this in any way give rise to conflicts with the whole algorithm selection mechanism via keywords and symbols?

@lkdvos
Copy link
Member Author

lkdvos commented Feb 27, 2026

Not really, I think mostly the alg is still there for the algorithm selection mechanism, which should then become alg = :Householder (which I will fix in a moment), while the driver is just an additional keyword argument that may or may not be there. I think in the end this is not changing all that much, just adding one more layer of delaying choices, based on the assumption that you probably don't want to change the driver, while it is more reasonable to try and change the algorithm.

@codecov
Copy link

codecov bot commented Feb 27, 2026

Codecov Report

❌ Patch coverage is 86.25000% with 33 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/implementations/qr.jl 88.04% 11 Missing ⚠️
src/implementations/lq.jl 91.34% 9 Missing ⚠️
ext/MatrixAlgebraKitGenericLinearAlgebraExt.jl 68.42% 6 Missing ⚠️
src/common/householder.jl 28.57% 5 Missing ⚠️
src/interface/lq.jl 66.66% 1 Missing ⚠️
src/interface/qr.jl 66.66% 1 Missing ⚠️
Files with missing lines Coverage Δ
...ixAlgebraKitAMDGPUExt/MatrixAlgebraKitAMDGPUExt.jl 72.91% <100.00%> (+0.91%) ⬆️
...MatrixAlgebraKitCUDAExt/MatrixAlgebraKitCUDAExt.jl 61.29% <100.00%> (+0.35%) ⬆️
src/algorithms.jl 90.78% <100.00%> (+0.40%) ⬆️
src/interface/decompositions.jl 78.26% <100.00%> (+4.57%) ⬆️
src/interface/lq.jl 83.33% <66.66%> (+19.69%) ⬆️
src/interface/qr.jl 83.33% <66.66%> (+19.69%) ⬆️
src/common/householder.jl 59.45% <28.57%> (ø)
ext/MatrixAlgebraKitGenericLinearAlgebraExt.jl 85.91% <68.42%> (-8.07%) ⬇️
src/implementations/lq.jl 94.49% <91.34%> (-2.70%) ⬇️
src/implementations/qr.jl 95.00% <88.04%> (-0.21%) ⬇️

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants