Skip to content

Commit a5c258d

Browse files
committed
Refine the Cray OpenACC pitfall: every routine level, OpenMP unaffected
1 parent a9b8fb9 commit a5c258d

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

.claude/rules/common-pitfalls.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ covered in `docs/documentation/contributing.md`.
6060
QBMM/viscous and MHD HLLD, while both Lagrange bubble cases *complete* with out-of-tolerance
6161
answers. Measured 2026-08-29 on MI210. A compile-only check returns green, so any future attempt to
6262
drop these must run the tests, not just build.
63-
- **CCE OpenACC (19.0.0 through 21.0.2, `-O2`; `-O0`/`-O1` correct): a device routine that contains a
64-
`GPU_LOOP(parallelism='[seq]')` (itself or through what CCE inlines into it) must be called with
65-
scalars, never with an array element as an actual argument.** With both ingredients present the
63+
- **CCE OpenACC (19.0.0 through 21.0.2, `-O2`; `-O0`/`-O1` correct; OpenMP offload unaffected): a device
64+
routine that contains any `GPU_LOOP` (itself or in anything it calls) must be called with scalars,
65+
never with an array element as an actual argument.** Every `routine` level is affected, including the
66+
conforming `loop vector` inside `routine vector`. With both ingredients present the
6667
element is misaddressed: an `intent(in)` element reads as garbage, an `intent(out)` element is
6768
never written. Either ingredient alone is fine, which is why master's `s_compute_pressure(q%sf(j,k,l),...)`
6869
works (no loop) and `s_compute_mixture_coefficients` works (scalar actuals). PR #1811 added the

0 commit comments

Comments
 (0)