You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #1588 / #1587. The #1556 regression silently disabled viscosity on the AMD-flang gpu-omp build and was caught only by the 2D_viscous_shock_tubeexample, not the regression suite — because the AMD gpu-omp CI shards' coverage selection skipped the 2D -> Example -> * viscous tests (the "secondary question" in #1587). The suite is not short on viscous cases; the gap is test selection on the AMD lane, so simply adding more tests wouldn't help if they're skipped the same way.
Proposed hardening (each can be its own small PR):
Always-run viscous-GPU canary. One fast 2-fluid viscous case marked non-skippable on the AMD gpu-omp lane, so any regression that silently disables viscosity (wrong Re, stale device state, etc.) trips immediately. Rides the existing is_always_run_all path in toolchain/mfc/test/coverage.py.
Precheck rule for static declare target arrays (optional).Fix silent viscosity loss on AMD flang GPU (host-capture Re_size in the Riemann solvers) #1588's root cause is that AMD flang does not unify a static (non-allocatable) declare target module array across translation units; Re_size was the last static one among the Re_* arrays. A lint_source.py rule flagging non-allocatable arrays under GPU_DECLARE (suggesting allocatable) would catch the next instance at commit time, before any CI.
Context: the underlying defect is an amdflang bug (ROCm/llvm-project#2890, llvm/llvm-project#203711), but it produces silent wrong answers, so CI coverage of the viscous-GPU path is the durable guard.
Follow-up to #1588 / #1587. The #1556 regression silently disabled viscosity on the AMD-flang gpu-omp build and was caught only by the
2D_viscous_shock_tubeexample, not the regression suite — because the AMD gpu-omp CI shards' coverage selection skipped the2D -> Example -> *viscous tests (the "secondary question" in #1587). The suite is not short on viscous cases; the gap is test selection on the AMD lane, so simply adding more tests wouldn't help if they're skipped the same way.Proposed hardening (each can be its own small PR):
Always-run viscous-GPU canary. One fast 2-fluid viscous case marked non-skippable on the AMD gpu-omp lane, so any regression that silently disables viscosity (wrong
Re, stale device state, etc.) trips immediately. Rides the existingis_always_run_allpath intoolchain/mfc/test/coverage.py.Map GPU-state files to viscous tests in the coverage map. Changes to
src/simulation/m_global_parameters.fpp,m_riemann_*, or anything carrying aGPU_DECLAREshould force a viscous-GPU test — that's exactly the blast radius of Fix silent viscosity loss on AMD flang GPU (host-capture Re_size in the Riemann solvers) #1588.Precheck rule for static
declare targetarrays (optional). Fix silent viscosity loss on AMD flang GPU (host-capture Re_size in the Riemann solvers) #1588's root cause is that AMD flang does not unify a static (non-allocatable)declare targetmodule array across translation units;Re_sizewas the last static one among theRe_*arrays. Alint_source.pyrule flagging non-allocatable arrays underGPU_DECLARE(suggesting allocatable) would catch the next instance at commit time, before any CI.Context: the underlying defect is an
amdflangbug (ROCm/llvm-project#2890, llvm/llvm-project#203711), but it produces silent wrong answers, so CI coverage of the viscous-GPU path is the durable guard.