[PATCH] D102801: [CUDA][HIP] Fix device variables used by host
Artem Belevich via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 20 11:25:27 PDT 2021
tra added a comment.
In D102801#2771664 <https://reviews.llvm.org/D102801#2771664>, @yaxunl wrote:
> In the updated patch I have a simpler solution which is easier to explain to the users. Basically we classify variables by how they are emitted: device side only, host side only, both sides as different entities (e.g. default constexpr var), and both sides as unified entity (e.g. managed var). For variables emitted on both sides as separate entities, we have limited knowledge and we limit what we can do for them. I think users should understand the compiler's limitation in such cases. And they can easily workaround that by making the variable explicitly device variable.
This is really nice.
Let me test it internally and see if anything breaks.
================
Comment at: clang/include/clang/Sema/Sema.h:12066
+ enum CUDAVariableTarget {
+ CVT_Device, /// Device only
----------------
Wasn't there another kind, where the variable is emitted on the host with device-side shadow? I vaguely recall it had something to do with textures.
================
Comment at: clang/include/clang/Sema/Sema.h:12067
+ enum CUDAVariableTarget {
+ CVT_Device, /// Device only
+ CVT_Host, /// Host only
----------------
I think we should mention the host-side shadows, too.
================
Comment at: clang/lib/Sema/SemaCUDA.cpp:148-149
+ return CVT_Unified;
+ if (hasImplicitAttr<CUDAConstantAttr>(Var))
+ return CVT_Both;
+ if (Var->hasAttr<CUDADeviceAttr>() || Var->hasAttr<CUDAConstantAttr>() ||
----------------
I'm still not a fan of relying on a implicit __constant__.
Can we change it to more direct `is-a-constexpr && !has-explicit-device-side-attr` ?
We may eventually consider relaxing this to `can-be-const-evaluated` and allow const vars with known values.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102801/new/
https://reviews.llvm.org/D102801
More information about the cfe-commits
mailing list