PERF-2 P0-b: CG iterations per Poisson solve in the profile (ms per V-cycle) and sub-timers inside the patch regeneration (outline, hull + offset, ring projection, Winslow sweeps, respace, warm bookkeeping, mesh finalisation)
CI / Test (ubuntu-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (macos-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (ubuntu-latest) (push) Blocked by required conditions
CI / WASM Build + Size Check (push) Blocked by required conditions
CI / Distributed Training Tests (push) Blocked by required conditions
CI / CI Success (push) Blocked by required conditions
CI / Build (macos-latest) (push) Waiting to run
CI / Test (macos-latest) (push) Blocked by required conditions
Documentation / Build API Documentation (push) Failing after 5s
CI / Build (ubuntu-latest) (push) Failing after 6s
Documentation / Build User Guide (push) Successful in 6s
CI / Format Check (push) Failing after 14s
CI / Clippy Check (push) Failing after 48s
CI / Build CPU-Only (Explicit) (push) Failing after 2m21s
Performance Benchmarks / Run Benchmarks (push) Successful in 4m4s
CI / Test (ubuntu-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (macos-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (ubuntu-latest) (push) Blocked by required conditions
CI / WASM Build + Size Check (push) Blocked by required conditions
CI / Distributed Training Tests (push) Blocked by required conditions
CI / CI Success (push) Blocked by required conditions
CI / Build (macos-latest) (push) Waiting to run
CI / Test (macos-latest) (push) Blocked by required conditions
Documentation / Build API Documentation (push) Failing after 5s
CI / Build (ubuntu-latest) (push) Failing after 6s
Documentation / Build User Guide (push) Successful in 6s
CI / Format Check (push) Failing after 14s
CI / Clippy Check (push) Failing after 48s
CI / Build CPU-Only (Explicit) (push) Failing after 2m21s
Performance Benchmarks / Run Benchmarks (push) Successful in 4m4s
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01YJPeT6WA2e7YvAnS875AHL
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
172a26dee4
commit
1547d14ff1
@@ -1164,43 +1164,58 @@ impl OversetFluid {
|
||||
/// setup / iterate split.
|
||||
pub fn profile_line(&self) -> Option<String> {
|
||||
let t = self.solver.timers()?;
|
||||
let (ps, pi, pc) = self.solver.background().poisson_profile();
|
||||
let (ps, pi, pc, pk) = self.solver.background().poisson_profile();
|
||||
let rg = rtx_cfd::mesh::patch_gen::regen_profile();
|
||||
let s = |ns: u64| ns as f64 * 1e-9;
|
||||
let adv = s(t.advance_ns).max(1e-300);
|
||||
let pct = |ns: u64| 100.0 * s(ns) / adv;
|
||||
Some(format!(
|
||||
" advance split over {} steps ({} rounds), {:.0} s: overlap build {:.0} s ({:.1}%), predictor bg {:.0} s ({:.1}%), predictor patch {:.0} s ({:.1}%), bg Poisson {:.0} s ({:.1}%) [setup {:.0} s, iterate {:.0} s, {} solves], patch BiCGSTAB {:.0} s ({:.1}%), round exchange {:.0} s ({:.1}%), apply {:.0} s ({:.1}%), end exchange {:.0} s ({:.1}%), other {:.0} s",
|
||||
t.steps,
|
||||
t.rounds,
|
||||
adv,
|
||||
s(t.overlap_build_ns),
|
||||
pct(t.overlap_build_ns),
|
||||
s(t.predictor_bg_ns),
|
||||
pct(t.predictor_bg_ns),
|
||||
s(t.predictor_patch_ns),
|
||||
pct(t.predictor_patch_ns),
|
||||
s(t.bg_solve_ns),
|
||||
pct(t.bg_solve_ns),
|
||||
s(ps),
|
||||
s(pi),
|
||||
pc,
|
||||
s(t.patch_solve_ns),
|
||||
pct(t.patch_solve_ns),
|
||||
s(t.round_exchange_ns),
|
||||
pct(t.round_exchange_ns),
|
||||
s(t.apply_ns),
|
||||
pct(t.apply_ns),
|
||||
s(t.end_exchange_ns),
|
||||
pct(t.end_exchange_ns),
|
||||
adv - s(t.overlap_build_ns
|
||||
+ t.predictor_bg_ns
|
||||
+ t.predictor_patch_ns
|
||||
+ t.bg_solve_ns
|
||||
+ t.patch_solve_ns
|
||||
+ t.round_exchange_ns
|
||||
+ t.apply_ns
|
||||
+ t.end_exchange_ns),
|
||||
))
|
||||
Some(
|
||||
format!(
|
||||
" advance split over {} steps ({} rounds), {:.0} s: overlap build {:.0} s ({:.1}%), predictor bg {:.0} s ({:.1}%), predictor patch {:.0} s ({:.1}%), bg Poisson {:.0} s ({:.1}%) [setup {:.0} s, iterate {:.0} s, {} solves, {} CG iterations, {:.2} ms per V-cycle], patch BiCGSTAB {:.0} s ({:.1}%), round exchange {:.0} s ({:.1}%), apply {:.0} s ({:.1}%), end exchange {:.0} s ({:.1}%), other {:.0} s",
|
||||
t.steps,
|
||||
t.rounds,
|
||||
adv,
|
||||
s(t.overlap_build_ns),
|
||||
pct(t.overlap_build_ns),
|
||||
s(t.predictor_bg_ns),
|
||||
pct(t.predictor_bg_ns),
|
||||
s(t.predictor_patch_ns),
|
||||
pct(t.predictor_patch_ns),
|
||||
s(t.bg_solve_ns),
|
||||
pct(t.bg_solve_ns),
|
||||
s(ps),
|
||||
s(pi),
|
||||
pc,
|
||||
pk,
|
||||
1e3 * s(pi) / (pk + pc).max(1) as f64,
|
||||
s(t.patch_solve_ns),
|
||||
pct(t.patch_solve_ns),
|
||||
s(t.round_exchange_ns),
|
||||
pct(t.round_exchange_ns),
|
||||
s(t.apply_ns),
|
||||
pct(t.apply_ns),
|
||||
s(t.end_exchange_ns),
|
||||
pct(t.end_exchange_ns),
|
||||
adv - s(t.overlap_build_ns
|
||||
+ t.predictor_bg_ns
|
||||
+ t.predictor_patch_ns
|
||||
+ t.bg_solve_ns
|
||||
+ t.patch_solve_ns
|
||||
+ t.round_exchange_ns
|
||||
+ t.apply_ns
|
||||
+ t.end_exchange_ns),
|
||||
) + &format!(
|
||||
"\n regeneration split ({} builds): outline {:.0} s, hull + offset {:.0} s, ring projection {:.0} s, Winslow sweeps {:.0} s, respace {:.0} s, warm bookkeeping {:.0} s, mesh finalisation {:.0} s",
|
||||
rg[7],
|
||||
s(rg[0]),
|
||||
s(rg[1]),
|
||||
s(rg[2]),
|
||||
s(rg[3]),
|
||||
s(rg[4]),
|
||||
s(rg[5]),
|
||||
s(rg[6])
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn time(&self) -> f64 {
|
||||
|
||||
Reference in New Issue
Block a user