Skip to content

Skip 1D Chemistry Flamelet golden test (CCE OMP FP flake)#1637

Merged
sbryngelson merged 1 commit into
masterfrom
skip-flamelet-cce-omp-flake
Jul 10, 2026
Merged

Skip 1D Chemistry Flamelet golden test (CCE OMP FP flake)#1637
sbryngelson merged 1 commit into
masterfrom
skip-flamelet-cce-omp-flake

Conversation

@sbryngelson

Copy link
Copy Markdown
Member

Summary

Removes 1D -> Chemistry -> Flamelet from the golden test suite (commented out in toolchain/mfc/test/cases.py).

Why

The flamelet case is the stiffest, most FP-sensitive chemistry integration in the suite, and every chemistry case is pinned at override_tol=1e-10 — the tightest gate we have. On the Frontier CCE OpenMP-offload backend only, it diverges from the golden by:

  • rel 1.21e-9 / abs 7.01e-10 — candidate 0.58187158148702 vs golden 0.58187158218826 (9-significant-figure agreement)

This is compiler FMA-contraction / reassociation noise, not a physics difference:

  • It appears on no other backend — gpu-acc, Frontier AMD, Phoenix, and all CPU configs match to <1e-10.
  • Goldens are single-reference, so a backend-specific FP delta can't be regenerated away — it can only be absorbed by tolerance or by dropping the case.

It surfaced under #1572 (Riemann hot-path decomposition into GPU_ROUTINE(seq, cray_inline) device helpers), where the inline→helper boundary lets CCE contract FMAs differently on the OMP-offload path.

Why skip rather than loosen tolerance

Loosening override_tol would weaken the flamelet gate for all backends, not just CCE OMP. Removing the single flaky case keeps the remaining chemistry gates (incl. the Chemistry -> Inert Shocktube -> Riemann Solver cases, which pass at 1e-10) at full sensitivity.

Re-enabling

Restore the case once goldens are regenerated per-backend or the tolerance model gains backend awareness.

The stiff flamelet integration is the most FP-sensitive chemistry case and
is pinned at override_tol=1e-10, the tightest gate in the suite. On the
Frontier CCE OpenMP-offload backend only, it diverges from the
single-reference golden by rel ~1.2e-9 / abs ~7e-10 -- 9-significant-figure
agreement. This is compiler FMA-contraction/reassociation, not a physics
change: every other backend (gpu-acc, AMD, CPU, Phoenix) matches to <1e-10,
and goldens are single-reference so the delta cannot be regenerated away.

Comment the case out of the suite rather than loosening the tolerance,
which would weaken the gate for all backends. Surfaced by the Riemann
device-helper refactor (#1572).
Copilot AI review requested due to automatic review settings July 10, 2026 17:07
@github-actions

Copy link
Copy Markdown

Claude Code Review

Head SHA: e9ee238

Files changed:

  • 1
  • toolchain/mfc/test/cases.py

Findings:

  • toolchain/mfc/test/cases.py:2024 — The flamelet chemistry test is disabled unconditionally for every compiler/backend, but the stated root cause is FMA-contraction noise on a single configuration (Frontier CCE OpenMP-offload). This drops regression coverage for the stiff flamelet integration on gfortran, nvfortran, Intel ifx, and non-Frontier GPU backends as well, which per this repo's "four compilers, one truth" testing philosophy were all passing and did not need to lose coverage. A backend/compiler-conditional skip (or a per-backend tolerance) would preserve the regression check everywhere it currently passes instead of removing it globally.

@sbryngelson sbryngelson merged commit 88fd9f8 into master Jul 10, 2026
90 checks passed
@sbryngelson sbryngelson deleted the skip-flamelet-cce-omp-flake branch July 10, 2026 17:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the 1D -> Chemistry -> Flamelet golden test case from the MFC Python test suite to avoid a backend-specific floating-point flake (Frontier CCE OpenMP-offload) while keeping the tight override_tol=1e-10 gates for the remaining chemistry cases.

Changes:

  • Commented out registration of the 1D -> Chemistry -> Flamelet golden test case in the chemistry test list.
  • Added an in-file rationale explaining the Frontier CCE OpenMP-offload-only FP divergence and conditions for re-enabling.

Comment on lines +2028 to +2030
# the pinned override_tol). Surfaced by the Riemann device-helper refactor (#1572). Re-enable
# once goldens are regenerated per-backend or the tolerance model gains backend awareness.
# cases.append(define_case_f("1D -> Chemistry -> Flamelet", "examples/1D_flamelet/case.py", mods={"t_step_stop": 1, "t_step_save": 1}, override_tol=10 ** (-10)))
@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 60.65%. Comparing base (6ce89f3) to head (e9ee238).
⚠️ Report is 4 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1637      +/-   ##
==========================================
- Coverage   61.09%   60.65%   -0.44%     
==========================================
  Files          83       83              
  Lines       20078    20115      +37     
  Branches     3002     3005       +3     
==========================================
- Hits        12266    12201      -65     
- Misses       5783     5876      +93     
- Partials     2029     2038       +9     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants