Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Fused Cholesky accepts arbitrarily small positive pivots: near-singular condensed KKTs factor 'successfully' and MadNLP never regularizes

Closed
#127 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@sshin23 is already working on this.

Since Oct 13, 2026.

  • #129 by @sshin23 — open

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

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

found-by-agent

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from exanauts/SparseDirectSolver.jl

All issues in exanauts/SparseDirectSolver.jl

Similar issues

More Julia issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.