[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