Skip to content

Hand each channel pair's factor-width-2 V to approx-chol 0.7 - #482

Merged
schroedk merged 3 commits into
mainfrom
feat/approx-chol-0.7
Nov 1, 2026
Merged

schroedk merged 3 commits into
mainfrom
feat/approx-chol-0.7

Conversation

@schroedk

@schroedk schroedk commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #481, Closes #454

Each channel pair passes approx-chol 0.7 its Gram factor V: one column per observation, with both levels' loadings scaled by √w. approx-chol does the SGDD→SDDM reduction itself, and each irreducible block it returns becomes a Schwarz subdomain.

  • domain/factor_pairs.rs builds V from level, loading and weight columns, and keeps pair enumeration, isolated-level batching and the partition of unity.
  • block_solver.rs adapts approx-chol's BlockFactors to LocalSolver.
  • The second commit only deletes files that are no longer referenced (−4298 lines): block_elim/, csr_block.rs, domain/cross_tab/, factor_pairs/{grounding,sddm}.

Breaking:

  • ApproxSchurConfig::seed (Python seed=) is removed; the sampler draws from ApproxCholConfig::seed.
  • ScalingConfig::tolerance must lie in [0, 1).

Notes:

Tests: all 21 within test binaries pass, including bitwise determinism across thread counts. pytest: 116 passed. No benchmark has been run yet.

@schroedk

Copy link
Copy Markdown
Collaborator Author

@s3alfisc @leostimpfle @johannes-schmieder @leninworld, this moves a lot of the logic from within to approx-chol. This fixes a wrong placed cut (see #481), removes more than 1000 production code lines, simplify within a lot, but will also introduce major conflicts on your forks. I am sorry for the inconvenience:(

Each channel pair's Gram matrix is V Vᵀ, one column per observation with
its two levels' loadings scaled by √w. approx-chol 0.7 takes that bipartite
factor-width-2 input and does the SGDD → SDDM reduction itself, so each of
its irreducible blocks becomes a Schwarz subdomain behind BlockSolver.

ApproxSchurConfig::seed is removed: the sampler draws from
ApproxCholConfig::seed. The v21 wire fixture is regenerated.

Refs #481
Block elimination, the cross tables, the SDDM conversion with its scaling and
grounding, the Schur assembly and the CSR block are unreferenced since the
reduction moved into approx-chol.

Refs #481
@schroedk
schroedk force-pushed the feat/approx-chol-0.7 branch from 2b35859 to e6bd37e Compare October 31, 2026 15:23
…oundary

approx-chol 0.7 reports any deficit past rounding, so filter on
violation > tolerance as before. Document dense_threshold as the
Cholesky dimension with a signed block's cover sheets counted.
@schroedk
schroedk added this pull request to stack #487 October 31, 2026 20:59
@schroedk
schroedk merged commit ad89c19 into main Nov 1, 2026
5 checks passed
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.

Switch to approx-chol 0.7: hand each channel pair to approx-chol as factor width 2 Floating slope components keep an unconverged scaling

1 participant