[clang] [cuda][[HIP] `__constant__` should imply constant (PR #110182)
Alex Voicu via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 26 17:12:29 PDT 2024
AlexVlx wrote:
> Well, it's certainly used that way in existing CUDA code and it's been around forever: Here are few random examples:
>
> * from both 10 years ago:
> https://stackoverflow.com/questions/20535683/cuda-5-5-cudamemcpytosymbol-constant-and-out-of-scope-error
> * fairly recent example: https://forums.developer.nvidia.com/t/constant-memory-cudamemcpytosymbol-and-compilation-units/248780
Hmm, neither of those illustrates what I was getting at / both would still work just the same even with this change, I think. Because the `memcpyToSymbol`s would always be sequenced before the actual kernel dispatch expected to observe the modified values, and since these remain `externally_initialized` it should be fine (empirically, this appears to work as expected).
Also, turns out that the case I was considering (kernel executes concurrently with updates to a `__constant__` variable it is accessing) is explicitly called out as UB by CUDA under 10.2.2: `The behavior of modifying a constant from the host while there is a concurrent grid that access that constant at any point of this grid’s lifetime is undefined.`, so we're safe from that at least.
https://github.com/llvm/llvm-project/pull/110182
More information about the cfe-commits
mailing list