feat(bench): the direct solvers' systems exported as Matrix Market files, and photonoxide's factorization timed on them - #153
Merged
Merged
Conversation
…les, and photonoxide's factorization timed on them
…dows, where GitHub's runners factor them badly (#154)
… the fill to set against PARDISO's and MUMPS's
…lops photonoxide's factorization structure implies
…tes, so the structure's flops overstate its work
Merged
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.
Part of #143 (the owner approved running PARDISO and MUMPS as external baselines). This is the repository's half: pure Rust, nothing linked. The comparison itself follows in a second PR once the external solvers are installed.
Licences, checked
What
photonoxide::bench::export: the direct solvers' systems,slab-2d(the 2D solver's 440 × 340 slab, 149 600 unknowns), andstrip-24,strip-32,strip-40(the 3D direct solver's strip, n³ cells of 40 nm, PMLs of 6: 41 k, 98 k and 192 k unknowns), with a fixed right-hand side (zero on a 3D wall's fixed values, as the solver sets it).system(id),solve(system)(to round-off: the 3D direct solver, refined; in 2D, faer's LU with steps of refinement),write(dir, system, x):A.mtx(coordinate, complex, general, 1-based),b.mtx,x.mtxandabout.json. Every value in its shortest decimal that reads back to the same bits.factorize(system): photonoxide's own factorization timed on exactly that matrix, as its solvers do it (COLAMD in 2D, nested dissection in 3D): what PARDISO and MUMPS are compared with.photonoxide bench --export <dir> [<id>...]writes them (slab-2d 1.2 s, strip-24 3.4 s, strip-32 12.0 s, solutions included).Checked
f64::MAX, 1/3) read back to the last bit; the exported solution solves its system to 1e-11;factorizeuses each system's own ordering; an unknown id is refused.cargo test --release, clippy on both crates, rustdoc with-D warnings.Added since
symmetric(system, x): B = S A S⁻¹ with S² = D, the diagonal for which D A is symmetric (feat(fdfd): QMR for complex symmetric matrices on the curl-curl operator's symmetric similarity, twice as fast #149's similarity), with S b and S x.writeputs it in<id>/symmetric/when the system has one (all four do), for PARDISO's and MUMPS's LDLᵀ: the gain a complex symmetric factorization would bring. Test: B is its own transpose to the last bit, and B (S x) = S (A x) to 1e-13 for an arbitrary x.Factorized::factor_entries: the entries faer's LU makes room for, the Cholesky factor of AᵀA's structure in the column order, for L and for U (George & Ng 1987, doi:10.1137/0908072), from the column counts faer's own analysis computes. Test: exactly 5n − 6 for a tridiagonal matrix; less with nested dissection than in the natural order on a 2D Laplacian. On strip-32, 394 M entries: 6.3 GB, the process's whole peak.--ignored, and on Linux and macOS.