[PATCH] D102801: [CUDA][HIP] Fix device variables used by host
Yaxun Liu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 20 12:54:53 PDT 2021
yaxunl marked 3 inline comments as done.
yaxunl added inline comments.
================
Comment at: clang/include/clang/Sema/Sema.h:12066
+ enum CUDAVariableTarget {
+ CVT_Device, /// Device only
----------------
tra wrote:
> 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.
That was the first implementation, which was similar to managed var but used pinned host memory as a common memory shared by device and host.
However, that implementation was later replaced by a different implementation which is similar to nvcc. In the new implementation textures and surfaces are like usual device variables. So far I do not see the necessity to differentiate them from usual device variables.
================
Comment at: clang/include/clang/Sema/Sema.h:12067
+ enum CUDAVariableTarget {
+ CVT_Device, /// Device only
+ CVT_Host, /// Host only
----------------
tra wrote:
> I think we should mention the host-side shadows, too.
will do
================
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>() ||
----------------
tra wrote:
> 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.
>
will do. agree we should relax this for const var in the future
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102801/new/
https://reviews.llvm.org/D102801
More information about the cfe-commits
mailing list