Fused Cholesky accepts arbitrarily small positive pivots: near-singular condensed KKTs factor 'successfully' and MadNLP never regularizes
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- julia
- Domain
- backend-api-design, databases
Research direction
Start by examining the fused Cholesky paths and the no-pivot LDL mode, then reproduce the issue using the condensed cell for the named pglib cases through the MadNLP extension. Check whether the reported pivot behavior matches the proposed failure mechanism and whether a rejected factorization triggers regularization. Done means near-singular cases no longer report successful factorization and the MadNLP cases avoid the described NaN failures.
Written by the indexing model from the issue text.
Description
On near-singular condensed (normal-equations) KKT matrices, the fused Cholesky path reports info == 0 while cuDSS CHOLESKY solves the same MadNLP instances. Measured on SparseCondensedKKTSystem ACOPF (SDS at c5e2d86, L40S): pglib_opf_case6468_rte and 6470/6495/6515/1888/1951_rte plus 9241_pegase all diverge to NaN with sds_factorization = :cholesky (status 6, pviol = NaN at 3000 iterations), while cuDSS CHOLESKY solves them (6468: obj 2.07e6, |cons| 1.9e-9). SDS solves 57/66 of the condensed set; cuDSS solves these too.
Mechanism hypothesis: the Cholesky pivot acceptance is ajj > 0, so a tiny positive pivot (near-singular matrix) passes and produces huge factor entries; info == 0 makes the MadNLP extension report inertia (n, 0, 0), the IPM never regularizes, and NaNs appear downstream where cuDSS's stricter acceptance fails the factorization early and triggers MadNLP's regularization loop. The failure is silent by construction — the factorization that should refuse instead succeeds.
Candidate fix: a relative pivot-magnitude threshold in the Cholesky paths (reject ajj below eps-scaled max diagonal, reporting the failed column through the existing info channel), mirroring the no-pivot LDL mode's semantics where true inertia from D already gives MadNLP its regularization signal. Repro: the condensed cell of the named pglib cases through the MadNLP extension.
- Dominant language
- Julia
- Stars
- 3
- Forks
- 0
- Avg merge
- 4h 1m
- Merged PRs (30d)
- 73
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from exanauts/SparseDirectSolver.jl
-
found-by-agent
Difficulty 4/5 3-5 days Newbie friendliness 18/100
exanauts/SparseDirectSolver.jl#138 ·
Maintainers usually reply within 1 day
-
found-by-agent
Difficulty 4/5 3-5 days Newbie friendliness 18/100
exanauts/SparseDirectSolver.jl#137 ·
Maintainers usually reply within 1 day
-
T31 — oneAPI and Metal extensions, allocation-free KA dense fallbacks (issues #112, #53)Possibly taken @dmaldona claimed this 1 day ago. Opentask
Difficulty 5/5 Over a week Newbie friendliness 12/100
exanauts/SparseDirectSolver.jl#118 ·
Maintainers usually reply within 1 day
-
task
Difficulty 4/5 3-5 days Newbie friendliness 20/100
exanauts/SparseDirectSolver.jl#117 ·
Maintainers usually reply within 1 day
-
task
Difficulty 5/5 Over a week Newbie friendliness 8/100
exanauts/SparseDirectSolver.jl#116 ·
Maintainers usually reply within 1 day
All issues in exanauts/SparseDirectSolver.jl
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oscar-system/GAP.jl#1455 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
SciML/OrdinaryDiffEq.jl#4875 ·
Maintainers usually reply within 3 days
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
SciML/NonlinearSolve.jl#1372 ·
Maintainers usually reply within 1 day
-
Truncated discrete ccdf and logccdf return incorrect values at the lower atomPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
JuliaStats/Distributions.jl#2095 ·