[all-commits] [llvm/llvm-project] 31f5ae: [OpenACC] Honor precomputed active par dims on a p...
Matsu via All-commits
all-commits at lists.llvm.org
Thu Sep 17 16:19:17 PDT 2026
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 31f5ae6ba9105531001af6baa8357b6fb5613f46
https://github.com/llvm/llvm-project/commit/31f5ae6ba9105531001af6baa8357b6fb5613f46
Author: Matsu <47756807+khaki3 at users.noreply.github.com>
Date: 2026-09-17 (Thu, 17 Sep 2026)
Changed paths:
M mlir/lib/Dialect/OpenACC/Transforms/ACCCGToGPU.cpp
A mlir/test/Dialect/OpenACC/acc-cg-to-gpu-predicate-region-active-dims.mlir
Log Message:
-----------
[OpenACC] Honor precomputed active par dims on a predicate region (#224390)
Example:
```mlir
acc.predicate_region {
memref.store %updated, %shared[] : memref<f64>
} {acc.active_par_dims = #acc<active_par_dims[]>}
```
Code outside a gang-level loop runs on every thread block, so the block
dims are treated as active and never predicated away. That is right for a
redundant computation, but not for an in-place update of memory the whole
launch shares: every block applies it. The attribute above was ignored
here, because only a privatization could state which dims run it
unpredicated.
Fix: honor a precomputed active set on a predicate region too. An empty
set leaves one block and one thread performing the update; listing the
thread dims of the enclosing loops keeps a work-shared update distributing
its iterations. Behavior is unchanged for a region without the attribute.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list