Skip to content

Matching-based 2×2 pairs (algo5) cost ~2.1× nnz(L) on MadNLP K2 systems #96

Open

Description

@claude

Found while working on: T21 (#21, branch task/T21-matching-scaling)

What: With matching_alg = "algo5" the "S"/"H" analysis pairs every 2×2 candidate of the scaled matrix that lies on a cycle of the symmetric matching (matching_pairs, src/matching/mc64.jl). On the K2 dumps of bench/pivot_pairs.jl this is nearly every candidate (case118: 1539 pairs; case1354: 16646), so nnz(L) is 2.09–2.19× the unpaired ordering, against 1.25–1.31× for the default structurally-zero pairs without matching (#66). Accuracy is excellent (case118: 0 perturbed pivots, max|L| ≤ 9.7, relres 5.6e-14 before refinement; case1354: 5–6 perturbed, relres ≤ 3.9e-6, 1e-15 after 5 IR steps; cuDSS algo5: 0/14 perturbed, 5.4e-13/7.7e-3), but the factor and the update stack are ~1.7× larger than needed for the default pairs. On the converged case14 iterate the matching pairs cost 2.06× (default pairs 1.91×) with 0 perturbed pivots instead of 9.

Why it is out of scope: T21 asked for the matching-based pairs; reducing their fill is a tuning question for the owner (T25 performance pass, or a refinement of the pair selection).

Suggested fix or plan change: Apply the structurally-zero test of zero_pivot_pairs! to the matching's cycle pairs (pair a matched 2-cycle only when its candidate's pivot is structurally zero or the scaled diagonal is below a much smaller tolerance), and measure fill vs perturbed pivots on the K2 dumps with bench/pivot_pairs.jl.

Activity

  1. added
    found-by-agentOpened by an implementing agent for an out-of-scope finding
    on Oct 7, 2026
  2. michel2323 commented on Oct 7, 2026

    @michel2323
    Member

    Triage of #96 by measurement. Host only, KA CPU backend, Julia 1.13.1. The nine K2 dumps were regenerated with bench/dump_madnlp_kkt.jl (MadNLP, ExaModels and ExaModelsPower in a scratch env): case14 iterations 1, 10 and 15 (15 is the converged iterate), and case118 and case1354 at iterations 1, 10 and 20.

    Conclusion: no rule meets the bar. The fill is the price of the accuracy. No code change.

    The bar on case1354: nperturbed within a few of T21's 5–6, relres after 5 IR steps ≤ 1e-10, and nnz(L) ≤ 1.5× the unpaired ordering.

    rule (algo5) case118 k2_1/10/20: ratio, perturbed, relres+5 case1354 k2_1: ratio, perturbed, relres+5 case1354 k2_10 case1354 k2_20 case14 k2_15 (converged)
    T21 (cycle pairs with a candidate) 2.09–2.19, 0, ≤ 9.8e-16 2.18, 5, 7.4e-16 2.17, 5, 1.3e-15 2.15, 6, 1.2e-15 2.06, 0
    a: structurally zero pivots, paired with their matching mate 1.24, 0, ≤ 9.6e-16 1.34, 5, 7.9e-16 1.31, 32, 4e5 1.31, 28, 1.5 (max abs L 2.6e18) 2.06, 0
    b: scaled diagonal ≤ τ·row max, τ = 1e-2, 1e-4, 1e-8 identical to T21 identical identical identical identical
    c: a ∪ b identical to T21 for every τ identical identical identical identical

    What the table shows:

    • b and c select nothing new. The K2 dual rows have an exactly zero diagonal. Every matched cycle therefore contains a candidate at any τ > 0, and the value rule keeps every cycle. With τ = 0 it keeps none, which is pivot_pairs = "none".
    • a reaches the "default" fill (1.24–1.34×) and keeps the T21 accuracy on case14, case118 and case1354 k2_1 (relres before refinement ≤ 1.8e-10 instead of 5.6e-14).
    • a fails on the later case1354 iterates. k2_10 and k2_20 end with 28–32 perturbed pivots and the refinement diverges (relres+5 = 4e5 and 1.5). The device and the reference also disagree there (Device LDLᵀ differs from ref_ldlt! on the K2 dumps (pivot sequence, nperturbed; inertia equal) #86).
      • The broken pivots are structurally nonzero but cancel numerically. No structural rule can see them; only a value-aware choice can, which here means pairing every cycle (T21), or the a-posteriori pivoting of T27.
    • On the converged case14 iterate, a pairs 167 of the 169 cycles, since almost every pivot is structurally zero there. The fill stays 2.06×.
    • Variants tested along the way, also without success:
      • a with zero_pivot_pairs!'s greedy partner as a fallback when the mate is taken: never triggered, identical to a.
      • The structurally-zero rule with the greedy partners instead of the mates, on the scaled matrix: 13–125 perturbed pivots, relres+5 up to 1.1 on case1354.

    The fill numbers of PLAN §2.3 step 2 do not change.

    Next step: TASKS.md T25 gets the note "re-measure after the level merging whether the extra fronts matter; otherwise accepted" (docs-only PR, Refs #96). Owner: please label this issue triaged.

    Full tables follow. Columns: nnz(L) ratio to "none"; zero and perturbed pivots; 2×2 pivots; max abs L and factor error ‖A[p,p] − LDLᵀ‖_F/‖A‖_F, both of the scaled matrix under matching; relres = ‖b − Ax‖/‖b‖ with b = A·1, before refinement and after 2 and 5 IR steps; inertia; dev=ref = device and CPU reference agree on inertia and nperturbed (the reference count is in parentheses when they disagree). The "a'"/"a''" rows are the two variants above.

    Measured tables (nine K2 dumps)

    kkt_pglib_opf_case118_ieee_k2_1.mtx (n = 3150)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 16375 1.0 90 125 94 1.3e+15 0.0058 0.11 9.3e-05 6.8e-09 (1611, 1539) yes
    default 205 21032 1.28 0 5 99 1.4e+15 0.0017 0.023 5.6e-10 1.1e-15 (1611, 1539) yes
    all 1480 35708 2.18 49 69 341 1.3e+15 0.0035 0.053 2.1e-05 4.8e-10 (1611, 1539) yes
    algo5/none 0 16375 1.0 70 143 216 3.3e+13 0.0017 1.5 0.028 0.00027 (1611, 1539) yes
    algo5/default (T21) 1539 35796 2.19 0 0 957 9.7 1.5e-16 5.6e-14 1.1e-15 9.8e-16 (1611, 1539) yes
    algo5/all 1539 35796 2.19 0 0 957 9.7 1.5e-16 5.6e-14 1.1e-15 9.8e-16 (1611, 1539) yes
    a: algo5 struct-zero, mate 252 20346 1.24 0 0 363 5.8e+04 2.9e-13 1.8e-10 1.4e-15 9.6e-16 (1611, 1539) yes
    a': a + greedy fallback 252 20346 1.24 0 0 363 5.8e+04 2.9e-13 1.8e-10 1.4e-15 9.6e-16 (1611, 1539) yes
    a'': struct-zero, greedy (scaled) 249 20724 1.27 13 13 341 2.8e+13 0.00033 0.31 0.00014 5.2e-09 (1611, 1539) yes
    b: τ=1e-2 1539 35796 2.19 0 0 957 9.7 1.5e-16 5.6e-14 1.1e-15 9.8e-16 (1611, 1539) yes
    b: τ=1e-4 1539 35796 2.19 0 0 957 9.7 1.5e-16 5.6e-14 1.1e-15 9.8e-16 (1611, 1539) yes
    b: τ=1e-8 1539 35796 2.19 0 0 957 9.7 1.5e-16 5.6e-14 1.1e-15 9.8e-16 (1611, 1539) yes
    c: a ∪ b(1e-4) 1539 35796 2.19 0 0 957 9.7 1.5e-16 5.6e-14 1.1e-15 9.8e-16 (1611, 1539) yes
    c: a ∪ b(1e-8) 1539 35796 2.19 0 0 957 9.7 1.5e-16 5.6e-14 1.1e-15 9.8e-16 (1611, 1539) yes

    kkt_pglib_opf_case118_ieee_k2_10.mtx (n = 3150)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 16375 1.0 74 147 255 1.4e+15 0.0023 0.0029 3.4e-05 5.8e-08 (1611, 1539) no (146)
    default 208 20542 1.25 0 3 297 2.1e+14 1.3e-05 1.7e-05 1e-11 3.5e-17 (1611, 1539) yes
    all 1412 35711 2.18 55 65 787 1.3e+15 0.0017 0.0025 2e-06 3.8e-10 (1611, 1539) yes
    algo5/none 0 16375 1.0 54 139 264 3e+13 0.0014 0.019 0.00022 8.8e-07 (1611, 1539) no (140)
    algo5/default (T21) 1539 34698 2.12 0 0 1137 5.1 1.3e-16 4.4e-16 2.7e-17 2.9e-17 (1611, 1539) yes
    algo5/all 1539 34698 2.12 0 0 1137 5.1 1.3e-16 4.4e-16 2.7e-17 2.9e-17 (1611, 1539) yes
    a: algo5 struct-zero, mate 258 20383 1.24 0 0 452 7.6e+04 1.5e-12 5.6e-12 3e-17 2.7e-17 (1611, 1539) yes
    a': a + greedy fallback 258 20383 1.24 0 0 452 7.6e+04 1.5e-12 5.6e-12 3e-17 2.7e-17 (1611, 1539) yes
    a'': struct-zero, greedy (scaled) 249 20412 1.25 15 21 399 3.4e+13 0.00033 0.0066 5.8e-05 2.2e-07 (1611, 1539) yes
    b: τ=1e-2 1539 34698 2.12 0 0 1137 5.1 1.3e-16 4.4e-16 2.7e-17 2.9e-17 (1611, 1539) yes
    b: τ=1e-4 1539 34698 2.12 0 0 1137 5.1 1.3e-16 4.4e-16 2.7e-17 2.9e-17 (1611, 1539) yes
    b: τ=1e-8 1539 34698 2.12 0 0 1137 5.1 1.3e-16 4.4e-16 2.7e-17 2.9e-17 (1611, 1539) yes
    c: a ∪ b(1e-4) 1539 34698 2.12 0 0 1137 5.1 1.3e-16 4.4e-16 2.7e-17 2.9e-17 (1611, 1539) yes
    c: a ∪ b(1e-8) 1539 34698 2.12 0 0 1137 5.1 1.3e-16 4.4e-16 2.7e-17 2.9e-17 (1611, 1539) yes

    kkt_pglib_opf_case118_ieee_k2_20.mtx (n = 3150)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 16375 1.0 76 137 324 1.5e+15 7.7e-05 7.7e-05 2.2e-07 6.3e-11 (1611, 1539) yes
    default 223 20507 1.25 0 3 390 2.1e+14 3.4e-07 5.3e-07 1.1e-13 8.1e-19 (1611, 1539) yes
    all 1404 35563 2.17 56 67 1037 1.4e+15 4.7e-05 5.2e-05 1.5e-06 4.5e-08 (1611, 1539) yes
    algo5/none 0 16375 1.0 54 101 336 2.9e+13 0.00095 0.00017 4.8e-06 1.8e-07 (1611, 1539) no (98)
    algo5/default (T21) 1539 34260 2.09 0 0 1444 3.3 1.1e-16 2.2e-17 1.2e-18 5.7e-19 (1611, 1539) yes
    algo5/all 1539 34260 2.09 0 0 1444 3.3 1.1e-16 2.2e-17 1.2e-18 5.7e-19 (1611, 1539) yes
    a: algo5 struct-zero, mate 257 20385 1.24 0 0 559 1.1e+05 3.3e-13 1.4e-14 1.1e-18 7.5e-19 (1611, 1539) yes
    a': a + greedy fallback 257 20385 1.24 0 0 559 1.1e+05 3.3e-13 1.4e-14 1.1e-18 7.5e-19 (1611, 1539) yes
    a'': struct-zero, greedy (scaled) 251 20345 1.24 15 25 515 2.5e+13 0.00032 2.3e-05 1.8e-08 1.3e-13 (1611, 1539) yes
    b: τ=1e-2 1539 34260 2.09 0 0 1444 3.3 1.1e-16 2.2e-17 1.2e-18 5.7e-19 (1611, 1539) yes
    b: τ=1e-4 1539 34260 2.09 0 0 1444 3.3 1.1e-16 2.2e-17 1.2e-18 5.7e-19 (1611, 1539) yes
    b: τ=1e-8 1539 34260 2.09 0 0 1444 3.3 1.1e-16 2.2e-17 1.2e-18 5.7e-19 (1611, 1539) yes
    c: a ∪ b(1e-4) 1539 34260 2.09 0 0 1444 3.3 1.1e-16 2.2e-17 1.2e-18 5.7e-19 (1611, 1539) yes
    c: a ∪ b(1e-8) 1539 34260 2.09 0 0 1444 3.3 1.1e-16 2.2e-17 1.2e-18 5.7e-19 (1611, 1539) yes

    kkt_pglib_opf_case1354_pegase_k2_1.mtx (n = 33811)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 169033 1.0 1134 2061 2360 3.6e+16 3.5 21 19 2.9e+02 (17161, 16650) no (2060)
    default 3268 215953 1.28 14 34 3646 3.6e+15 0.021 0.12 0.00071 5.1e-07 (17165, 16646) no (33)
    all 15071 305110 1.81 1032 1541 8338 9.9e+15 0.31 2 15 67 (17165, 16646) no (1547)
    algo5/none 0 169033 1.0 1087 2119 2626 1.6e+14 0.0046 85 7.7e+04 2e+09 (17161, 16650) no (2117)
    algo5/default (T21) 16646 368439 2.18 2 5 12189 1e+13 3.3e-06 3.9e-06 7.4e-16 7.4e-16 (17165, 16646) yes
    algo5/all 16646 368439 2.18 2 5 12189 1e+13 3.3e-06 3.9e-06 7.4e-16 7.4e-16 (17165, 16646) yes
    a: algo5 struct-zero, mate 3780 225908 1.34 2 5 5181 1e+13 1.4e-05 0.029 1.9e-08 7.9e-16 (17165, 16646) yes
    a': a + greedy fallback 3780 225908 1.34 2 5 5181 1e+13 1.4e-05 0.029 1.9e-08 7.9e-16 (17165, 16646) yes
    a'': struct-zero, greedy (scaled) 3875 223938 1.32 77 114 5236 2e+14 0.0012 2.2 0.82 1.1 (17165, 16646) yes
    b: τ=1e-2 16646 368439 2.18 2 5 12189 1e+13 3.3e-06 3.9e-06 7.4e-16 7.4e-16 (17165, 16646) yes
    b: τ=1e-4 16646 368439 2.18 2 5 12189 1e+13 3.3e-06 3.9e-06 7.4e-16 7.4e-16 (17165, 16646) yes
    b: τ=1e-8 16646 368439 2.18 2 5 12189 1e+13 3.3e-06 3.9e-06 7.4e-16 7.4e-16 (17165, 16646) yes
    c: a ∪ b(1e-4) 16646 368439 2.18 2 5 12189 1e+13 3.3e-06 3.9e-06 7.4e-16 7.4e-16 (17165, 16646) yes
    c: a ∪ b(1e-8) 16646 368439 2.18 2 5 12189 1e+13 3.3e-06 3.9e-06 7.4e-16 7.4e-16 (17165, 16646) yes

    kkt_pglib_opf_case1354_pegase_k2_10.mtx (n = 33811)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 169033 1.0 1060 2072 2285 3.7e+16 0.071 0.53 2 58 (17162, 16649) no (2066)
    default 3170 220146 1.3 16 48 2985 8.1e+15 0.002 0.041 0.0027 5.3e-05 (17165, 16646) yes
    all 14564 349154 2.07 547 1005 6558 9.7e+16 0.28 2.2 1 3.7 (17163, 16648) no (1009)
    algo5/none 0 169033 1.0 1019 2152 2435 1.8e+14 0.013 1.1 1.2e+03 5.4e+07 (17155, 16656) no (2143)
    algo5/default (T21) 16646 366592 2.17 0 5 11770 1e+13 2.9e-06 5.2e-08 1.3e-15 1.3e-15 (17165, 16646) yes
    algo5/all 16646 366592 2.17 0 5 11770 1e+13 2.9e-06 5.2e-08 1.3e-15 1.3e-15 (17165, 16646) yes
    a: algo5 struct-zero, mate 3763 221485 1.31 14 32 4953 3.5e+13 0.0002 1.7 1.7e+02 4e+05 (17164, 16647) no (32)
    a': a + greedy fallback 3763 221485 1.31 14 32 4953 3.5e+13 0.0002 1.7 1.7e+02 4e+05 (17164, 16647) no (32)
    a'': struct-zero, greedy (scaled) 3677 224634 1.33 56 96 4822 5e+14 0.0042 0.046 0.045 0.044 (17165, 16646) yes
    b: τ=1e-2 16646 366592 2.17 0 5 11770 1e+13 2.9e-06 5.2e-08 1.3e-15 1.3e-15 (17165, 16646) yes
    b: τ=1e-4 16646 366592 2.17 0 5 11770 1e+13 2.9e-06 5.2e-08 1.3e-15 1.3e-15 (17165, 16646) yes
    b: τ=1e-8 16646 366592 2.17 0 5 11770 1e+13 2.9e-06 5.2e-08 1.3e-15 1.3e-15 (17165, 16646) yes
    c: a ∪ b(1e-4) 16646 366592 2.17 0 5 11770 1e+13 2.9e-06 5.2e-08 1.3e-15 1.3e-15 (17165, 16646) yes
    c: a ∪ b(1e-8) 16646 366592 2.17 0 5 11770 1e+13 2.9e-06 5.2e-08 1.3e-15 1.3e-15 (17165, 16646) yes

    kkt_pglib_opf_case1354_pegase_k2_20.mtx (n = 33811)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 169033 1.0 1075 2046 2385 3.8e+16 0.029 1.7 53 2.4e+04 (17162, 16649) no (2042)
    default 3468 221265 1.31 11 32 3284 4.4e+15 0.00033 0.0049 0.00013 2e-07 (17165, 16646) no (31)
    all 13950 342224 2.02 529 970 6496 9.9e+16 0.2 0.072 0.057 0.081 (17163, 16648) no (977)
    algo5/none 0 169033 1.0 1030 2141 2748 2.1e+14 0.0032 0.94 5.3e+02 3.9e+06 (17161, 16650) no (2139)
    algo5/default (T21) 16646 363172 2.15 1 6 13469 1e+13 3.7e-06 3.2e-07 1.4e-15 1.2e-15 (17165, 16646) yes
    algo5/all 16646 363172 2.15 1 6 13469 1e+13 3.7e-06 3.2e-07 1.4e-15 1.2e-15 (17165, 16646) yes
    a: algo5 struct-zero, mate 3974 221963 1.31 19 28 6051 2.6e+18 0.00016 28 0.16 1.5 (17164, 16647) no (28)
    a': a + greedy fallback 3974 221963 1.31 19 28 6051 2.6e+18 0.00016 28 0.16 1.5 (17164, 16647) no (28)
    a'': struct-zero, greedy (scaled) 3952 224333 1.33 73 125 5559 4.9e+13 0.00027 0.07 0.3 0.89 (17164, 16647) no (127)
    b: τ=1e-2 16646 363172 2.15 1 6 13469 1e+13 3.7e-06 3.2e-07 1.4e-15 1.2e-15 (17165, 16646) yes
    b: τ=1e-4 16646 363172 2.15 1 6 13469 1e+13 3.7e-06 3.2e-07 1.4e-15 1.2e-15 (17165, 16646) yes
    b: τ=1e-8 16646 363172 2.15 1 6 13469 1e+13 3.7e-06 3.2e-07 1.4e-15 1.2e-15 (17165, 16646) yes
    c: a ∪ b(1e-4) 16646 363172 2.15 1 6 13469 1e+13 3.7e-06 3.2e-07 1.4e-15 1.2e-15 (17165, 16646) yes
    c: a ∪ b(1e-8) 16646 363172 2.15 1 6 13469 1e+13 3.7e-06 3.2e-07 1.4e-15 1.2e-15 (17165, 16646) yes

    kkt_pglib_opf_case14_ieee_k2_1.mtx (n = 344)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 1712 1.0 7 13 15 1.5e+14 0.00023 0.00093 1.5e-09 3.6e-16 (175, 169) yes
    default 23 2139 1.25 0 0 16 7.4e+07 2.4e-10 8.2e-10 3.1e-16 2.2e-16 (175, 169) yes
    all 160 3559 2.08 9 11 28 1.7e+14 0.00014 0.00056 1.8e-10 2.7e-16 (175, 169) yes
    algo5/none 0 1712 1.0 4 14 35 2.8e+13 0.0017 0.12 7.1e-06 3.4e-11 (175, 169) yes
    algo5/default (T21) 169 3651 2.13 0 0 116 28 1.3e-16 1.1e-14 2.5e-16 3.3e-16 (175, 169) yes
    algo5/all 169 3651 2.13 0 0 116 28 1.3e-16 1.1e-14 2.5e-16 3.3e-16 (175, 169) yes
    a: algo5 struct-zero, mate 25 2119 1.24 0 0 57 3.9e+03 5e-14 1.1e-11 2.9e-16 3.2e-16 (175, 169) yes
    a': a + greedy fallback 25 2119 1.24 0 0 57 3.9e+03 5e-14 1.1e-11 2.9e-16 3.2e-16 (175, 169) yes
    a'': struct-zero, greedy (scaled) 28 2091 1.22 3 3 51 1.9e+13 0.00056 0.07 1.4e-05 3.4e-10 (175, 169) yes
    b: τ=1e-2 169 3651 2.13 0 0 116 28 1.3e-16 1.1e-14 2.5e-16 3.3e-16 (175, 169) yes
    b: τ=1e-4 169 3651 2.13 0 0 116 28 1.3e-16 1.1e-14 2.5e-16 3.3e-16 (175, 169) yes
    b: τ=1e-8 169 3651 2.13 0 0 116 28 1.3e-16 1.1e-14 2.5e-16 3.3e-16 (175, 169) yes
    c: a ∪ b(1e-4) 169 3651 2.13 0 0 116 28 1.3e-16 1.1e-14 2.5e-16 3.3e-16 (175, 169) yes
    c: a ∪ b(1e-8) 169 3651 2.13 0 0 116 28 1.3e-16 1.1e-14 2.5e-16 3.3e-16 (175, 169) yes

    kkt_pglib_opf_case14_ieee_k2_10.mtx (n = 344)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 1712 1.0 8 15 50 1.6e+14 8.1e-08 1.3e-07 2.8e-17 2.4e-20 (175, 169) yes
    default 25 2154 1.26 0 0 52 2.6e+10 2.5e-11 5.7e-11 5.1e-20 1.3e-20 (175, 169) yes
    all 157 3640 2.13 6 14 114 1.5e+14 4.2e-08 6e-08 5.4e-16 1.4e-20 (175, 169) yes
    algo5/none 0 1712 1.0 4 8 50 1.9e+13 0.0006 5.7e-07 1.2e-12 2.3e-20 (175, 169) no (7)
    algo5/default (T21) 169 3519 2.06 0 0 162 1.7 1e-16 5.2e-19 2.5e-20 1.1e-20 (175, 169) yes
    algo5/all 169 3519 2.06 0 0 162 1.7 1e-16 5.2e-19 2.5e-20 1.1e-20 (175, 169) yes
    a: algo5 struct-zero, mate 28 2142 1.25 0 0 80 5.9e+04 3.3e-13 7.9e-16 3.7e-20 1.8e-20 (175, 169) yes
    a': a + greedy fallback 28 2142 1.25 0 0 80 5.9e+04 3.3e-13 7.9e-16 3.7e-20 1.8e-20 (175, 169) yes
    a'': struct-zero, greedy (scaled) 28 2041 1.19 3 4 72 1.9e+13 0.0008 4.9e-07 3.5e-14 2.1e-20 (175, 169) yes
    b: τ=1e-2 169 3519 2.06 0 0 162 1.7 1e-16 5.2e-19 2.5e-20 1.1e-20 (175, 169) yes
    b: τ=1e-4 169 3519 2.06 0 0 162 1.7 1e-16 5.2e-19 2.5e-20 1.1e-20 (175, 169) yes
    b: τ=1e-8 169 3519 2.06 0 0 162 1.7 1e-16 5.2e-19 2.5e-20 1.1e-20 (175, 169) yes
    c: a ∪ b(1e-4) 169 3519 2.06 0 0 162 1.7 1e-16 5.2e-19 2.5e-20 1.1e-20 (175, 169) yes
    c: a ∪ b(1e-8) 169 3519 2.06 0 0 162 1.7 1e-16 5.2e-19 2.5e-20 1.1e-20 (175, 169) yes

    kkt_pglib_opf_case14_ieee_k2_15.mtx (n = 344)

    rule pairs nnz(L) ratio zero perturbed 2×2 max abs L error relres relres+2 relres+5 inertia dev=ref
    none 0 1712 1.0 9 9 51 1.6e+14 6.3e-13 5e-13 4.7e-18 6.9e-26 (175, 169) no (10)
    default 156 3273 1.91 7 8 120 4.9e+14 4.2e-12 6.8e-12 1.5e-16 6.6e-26 (175, 169) no (9)
    all 32 2545 1.49 10 11 44 1.5e+14 3.7e-13 6.9e-13 3.7e-20 5e-26 (175, 169) yes
    algo5/none 0 1712 1.0 9 9 50 1.9e+13 0.00058 3.7e-12 4.7e-18 8.2e-26 (175, 169) no (8)
    algo5/default (T21) 169 3529 2.06 0 0 167 1.7 9e-17 1.5e-16 1.6e-25 5.9e-26 (175, 169) yes
    algo5/all 169 3529 2.06 0 0 167 1.7 9e-17 1.5e-16 1.6e-25 5.9e-26 (175, 169) yes
    a: algo5 struct-zero, mate 167 3519 2.06 0 0 167 1.7 9e-17 1.5e-16 7.5e-26 4e-26 (175, 169) yes
    a': a + greedy fallback 167 3519 2.06 0 0 167 1.7 9e-17 1.5e-16 7.5e-26 4e-26 (175, 169) yes
    a'': struct-zero, greedy (scaled) 162 3393 1.98 4 4 154 1.8e+13 0.00031 1.3e-11 3e-19 6.8e-26 (175, 169) yes
    b: τ=1e-2 169 3529 2.06 0 0 167 1.7 9e-17 1.5e-16 1.6e-25 5.9e-26 (175, 169) yes
    b: τ=1e-4 169 3529 2.06 0 0 167 1.7 9e-17 1.5e-16 1.6e-25 5.9e-26 (175, 169) yes
    b: τ=1e-8 169 3529 2.06 0 0 167 1.7 9e-17 1.5e-16 1.6e-25 5.9e-26 (175, 169) yes
    c: a ∪ b(1e-4) 169 3529 2.06 0 0 167 1.7 9e-17 1.5e-16 1.6e-25 5.9e-26 (175, 169) yes
    c: a ∪ b(1e-8) 169 3529 2.06 0 0 167 1.7 9e-17 1.5e-16 1.6e-25 5.9e-26 (175, 169) yes

    Generated by Claude Code

  3. added
    triagedOwner has looked at this found-by-agent issue; it no longer holds the task chain
    on Oct 9, 2026
  4. michel2323 commented on Oct 9, 2026

    @michel2323
    Member

    Triaged: accepted as documented in #104. The re-measurement after level merging is an item of T26 (segmented fused factorization) in TASKS.md.


    Generated by Claude Code

  5. added 2 commits that reference this issue on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    found-by-agentOpened by an implementing agent for an out-of-scope findingtriagedOwner has looked at this found-by-agent issue; it no longer holds the task chain

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions