Snapshot WIP: solver HP epic progress, BPHX/HX physics, BMAD skill refresh.
Some checks failed
CI / check (push) Has been cancelled
Some checks failed
CI / check (push) Has been cancelled
Capture uncommitted solver robustness work (regularization, domain errors, linear solver lifecycle, tube DP/MSH), web workbench updates, and synced BMAD skills across IDE agent folders before starting BPHX pressure-drop. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
119
docs/benchmarks/phase-0-baseline.md
Normal file
119
docs/benchmarks/phase-0-baseline.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# Phase-0 Performance Baseline
|
||||
|
||||
This document records the Phase-0 benchmark results for `entropyk-solver`. All
|
||||
later Epic-1 speedup claims (NFR1 ≥2× speedup, NFR2 100% parity) are measured
|
||||
against these numbers.
|
||||
|
||||
## Environment
|
||||
|
||||
| Property | Value |
|
||||
|---|---|
|
||||
| Date | 2026-07-18 |
|
||||
| Host OS | Windows (x86_64) |
|
||||
| Rust toolchain | 1.89.0 (stable, pinned via `rust-toolchain.toml`) |
|
||||
| Cargo profile | bench (release) |
|
||||
| Linear algebra path | nalgebra 0.33 dense LU |
|
||||
|
||||
## How to Reproduce
|
||||
|
||||
```bash
|
||||
# Ensure the pinned toolchain is active
|
||||
cargo --version # should report 1.89.0
|
||||
|
||||
# Run the full benchmark suite
|
||||
cargo bench -p entropyk-solver
|
||||
```
|
||||
|
||||
## Benchmark Results
|
||||
|
||||
Results were produced by `cargo bench -p entropyk-solver` on the commit captured
|
||||
in the story frontmatter (`baseline_commit`).
|
||||
|
||||
### LU Solve (Dense)
|
||||
|
||||
| Benchmark | Mean time |
|
||||
|---|---|
|
||||
| `lu_solve_mock_9x9` | **425.54 ns** |
|
||||
|
||||
Measures one Ruiz-equilibrated dense LU solve on the 9×9 Jacobian assembled
|
||||
from the deterministic mock refrigeration cycle.
|
||||
|
||||
### Residual / Jacobian Assembly
|
||||
|
||||
| Benchmark | Mean time |
|
||||
|---|---|
|
||||
| `residual_assembly_mock` | **420.95 ns** |
|
||||
| `jacobian_assembly_mock` | **157.47 ns** |
|
||||
|
||||
Measures a single full-system pass of `compute_residuals` and
|
||||
`jacobian_entries` on the mock cycle.
|
||||
|
||||
### Full Solve — Reference Cycles
|
||||
|
||||
Each benchmark builds a real CoolProp-backed emergent-pressure R134a cycle
|
||||
(4 components, 9 unknowns) and solves it end-to-end with the fallback Newton
|
||||
solver.
|
||||
|
||||
| Benchmark | Mean time |
|
||||
|---|---|
|
||||
| `full_solve_reference_cycle_a` | **48.64 ms** |
|
||||
| `full_solve_reference_cycle_b` | **67.06 ms** |
|
||||
| `full_solve_reference_cycle_c` | **66.78 ms** |
|
||||
|
||||
### Sequential Batch Solve Scaling
|
||||
|
||||
| N | Mean time |
|
||||
|---|---|
|
||||
| 1 | **56.03 ms** |
|
||||
| 2 | **118.01 ms** |
|
||||
| 4 | **240.03 ms** |
|
||||
|
||||
This is the Phase-0 *sequential* baseline. Parallel batch solving is out of
|
||||
scope and belongs to Epic 4.
|
||||
|
||||
## Golden Snapshots
|
||||
|
||||
The golden regression test solves the three reference cycles and compares the
|
||||
converged state against committed canonical JSON snapshots. Run with
|
||||
`ENTROPYK_BLESS=1` to regenerate snapshots after an intentional change.
|
||||
|
||||
| Cycle | SHA-256 (canonical JSON) |
|
||||
|---|---|
|
||||
| `golden_cycle_a.json` | `073408dede4ad4622272e9c9375d9f4823e7984ec9e54910a9790229d52af899` |
|
||||
| `golden_cycle_b.json` | `c01e7cb892ed5829926c38ad5ee1423fdfaa7d262c473a8eca46ebc4632b9142` |
|
||||
| `golden_cycle_c.json` | `6e1a77958cce1d1cf5e730505912a887c8bf4fc7dcaed820c7da482aa0ad9f98` |
|
||||
|
||||
## Integration Corpus
|
||||
|
||||
The NFR2 parity corpus consists of **31** pre-existing integration test files in
|
||||
`crates/solver/tests/` (including `_scratch_debug.rs` and `_tmp_analytic.rs`).
|
||||
This story added one new file (`golden_snapshot.rs`), bringing the solver test
|
||||
count to **32**. The 31 pre-existing files must continue to pass unmodified as
|
||||
later Epic-1 stories land; `golden_snapshot.rs` is part of the Phase-0 safety
|
||||
net and must also remain green.
|
||||
|
||||
## Reproduction Commands
|
||||
|
||||
```bash
|
||||
# Ensure the pinned toolchain is active
|
||||
cargo --version # should report 1.89.0
|
||||
|
||||
# Full workspace test suite
|
||||
cargo test --workspace
|
||||
|
||||
# Solver integration corpus only (includes golden snapshot)
|
||||
cargo test -p entropyk-solver --tests
|
||||
|
||||
# Golden snapshot regression test specifically
|
||||
cargo test -p entropyk-solver --test golden_snapshot --features coolprop
|
||||
|
||||
# Regenerate snapshots after an intentional physics/solver change
|
||||
ENTROPYK_BLESS=1 cargo test -p entropyk-solver --test golden_snapshot --features coolprop
|
||||
|
||||
# Benchmark suite
|
||||
cargo bench -p entropyk-solver
|
||||
|
||||
# Lint/format gates
|
||||
cargo fmt --check
|
||||
cargo clippy --workspace --all-targets -- -D warnings
|
||||
```
|
||||
Reference in New Issue
Block a user