Skip to content

No benchmark covers the six-equation model, so the pressure-relaxation path has no performance coverage #1882

Description

@sbryngelson

Every case in benchmarks/ runs model_eqns = 2:

benchmark model_eqns
5eq_rk3_weno3_hll 2
5eq_rk3_weno3_hllc 2
5eq_rk3_weno3_lf 2
hypo_hll 2
ibm 2
igr 2
viscous_weno5_sgb_acoustic 2

So s_pressure_relaxation_procedure — which for a six-equation case runs over the whole domain every step, including a Newton iteration per cell and the equation-of-state chain beneath it — is never benchmarked. The correctness side is well covered (16 model_eqns = 3 entries in toolchain/mfc/test/cases.py), but nothing measures what it costs.

Two consequences:

  1. A change that regresses six-equation throughput cannot be caught by CI. Nothing would move.
  2. A change that improves it cannot be demonstrated either, which is the position Stop NVHPC IPO silently miscompiling the six-equation relaxation kernel #1878 was in: the NVHPC IPO exclusion it adds lands on exactly this path, and the existing suite could not say whether that was free or expensive. Measuring it needed a purpose-built case.

For what it is worth, that measurement came out at roughly 0.2% either way on a 3D 128^3 two-fluid case with a state-dependent EOS, 100 steps — well inside run-to-run noise, so the exclusion is free. But that number came from a throwaway case rather than anything the repository keeps.

A six-equation entry in benchmarks/ would close the gap. A Mie-Gruneisen or JWL fluid paired with a stiffened-gas one exercises the state-dependent branch of s_phase_coefficients, which is the part with the deepest call chain and the one most sensitive to inlining decisions; a two-fluid sphere-collapse or shock-interface setup reaches relaxation in most cells rather than a handful.

Noting the sizing honestly: the benchmark suite already runs on Frontier and Phoenix for every PR, so an eighth case is not free, and whether it earns its wall-clock is a judgement call for whoever owns that budget.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions