Repository navigation
Conversation
METIS_OPTION_NSEPS (candidate separators per split) is the one NodeND knob that reproducibly improves the ACOPF KKT orderings: on kkt_pglib_opf_case78484_epigrids_condensed_10 (n = 157k), nd_nseps = 4 gives nnz(L) 14.42M vs 14.76M (-2.3%), factorization flops -6.7%, and the PR #107 fused refactorization 30.1 ms vs 32.1 ms (-6.2%, interleaved A/B on a GV100, correctness-gated) at the same schedule depth. The ordering itself runs ~2x slower, so the default stays at the METIS default (-1); the option pays off when one symbolic analysis is reused across many factorizations and is exposed like nd_ubfactor. ND_PROVIDER gains a third argument (values < 1 fall back to the library default); validated like the other config ints and covered in test_options and test_symbolic_etree.
sshin23
added a commit
that referenced
this pull request
Oct 13, 2026
…ering knobs, division-free Cholesky, GV100 record (#126) Device-built symbolic maps, the nd_nseps/nd_seed ordering parameters, the division-free Cholesky column step, the fused factorization/solve pipeline (src/fused.jl) with its no-pivot LDL mode and per-architecture tuning, the MadNLP package extension (exported SDSSolver with sds_factorization = :ldl and true inertia; no-pivot LDL disables 2x2 pivot-pair detection), the CPU fast path and HSL reference benches, the fresh-machine @sds workflow, and the campaign write-ups. Full validation record in the PR body. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
What
Exposes
METIS_OPTION_NSEPS(number of candidate separators METIS evaluates per split, keeping the best) as a cuDSS-style config parameternd_nseps, next tond_ubfactor. Default-1keeps the METIS default; values ≥ 1 are passed through, values < 1 fall back to the default.Why
Follow-up to the #107 ordering study:
nsepsis the one NodeND knob that reproducibly improves the ACOPF KKT orderings. Onkkt_pglib_opf_case78484_epigrids_condensed_10(n = 157k, the 78k-bus condensed KKT),nd_nseps = 4vs the default:GPU numbers are interleaved A/B medians, correctness-gated (info 0, factor delta ~3e-10 vs stock, matching residuals). The ordering itself roughly doubles in cost, so this stays opt-in: it pays when one symbolic analysis is reused across many factorizations (interior-point refactorization loops), which is the MadNLP usage pattern.
How
Optionsfield +ParameterSpec+ validation, mirroringnd_ubfactorND_PROVIDERcontract gains a third argument; the Metis extension passesnsepstoCliqueTrees.METIStest_options(roundtrip, type error, out-of-range) andtest_symbolic_etree(provider passthrough + fallback)Tests:
test_options+test_symbolic_etreeon CPU, 1658 pass. CUDA: pending CI.🤖 Generated with Claude Code