Repository navigation
Solver GPU performance: flat Riemann buffers, fewer per-launch mappings, build-time EOS family - #2116
Draft
sbryngelson wants to merge 3 commits into
Draft
sbryngelson wants to merge 3 commits into
sbryngelson wants to merge 3 commits into
Conversation
|
Claude Code Review Head SHA: e92747b Files changed:
Findings:
|
Lines of Code
|
sbryngelson
force-pushed
the
solver-perf
branch
from
November 3, 2026 18:50
1d879a1 to
b83ac9d
Compare
…L/HLLC/LF/HLLD, copy primitives only for readers; case-optimized builds compile only the selected Riemann solver
sbryngelson
force-pushed
the
solver-perf
branch
from
November 3, 2026 18:52
b83ac9d to
164213e
Compare
This branch has not been deployed
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.
Contribution Policy
All contributions are expected to demonstrate:
Summary
GPU-efficiency changes to the existing solver: same numerics, same results (every master golden passes unchanged), 18-31%
faster on the benchmark suite except IGR. This is the first of two PRs; the second (AMR) builds on it.
privateArraysoption in the GPU macros maps them alloc (OpenACC merges them intoprivate).conduction and chemistry read directly, instead of
scalar_fieldarguments;flux_nandflux_gsrc_nare gone.literal bounds so the stencils stay in registers.
q_prim_vfis copied out of the RHS only when probes, IB, Lagrangianbubbles, synthetic turbulence or run-time info read it (hyper_cleaning's
psiis always copied).every kernel; a case whose EOS does not match its binary aborts with a message. CI builds a third simulation variant
for the Mie-Gruneisen, JWL and Vinet cases. Case-optimized builds also compile only the selected Riemann solver.
Verification
Regression
Frontier, amdflang OpenMP (
./mfc.sh test -v --max-attempts 3 -a --gpu mp -- -c frontier_amd, 4 shards): 729/729,no golden changed.
Pending here (CI covers these too): NVHPC 25.11 OpenACC suite and OpenMP build on A100; Frontier CCE OpenACC/OpenMP.
Benchmarks (
./mfc.sh bench, one Frontier node, 8 GCDs, master and this PR alternated twice)Grind time, lower is better (run-to-run spread under 1%):
IGR is slower: with the EOS family constant, the compiler inlines the EOS chain into the IGR Riemann kernel (76-80 VGPRs +
128 AGPRs instead of 24-28 + 128), one fewer wave per SIMD. A runtime flag restores IGR but gives back part of the gain
elsewhere (HLLC 0.133 -> 0.169, IBM 0.342 -> 0.370), so the constant is kept. The changes target AMD per-launch costs;
NVIDIA timings are not measured yet.
Commits
GPU macros; build-time EOS family; solver restructure; review fixes. Only the final tree is built and tested.