为什么 __device__ 变量不能标记为 constexpr?
Why the __device__ variable can't be marked as constexpr?
如果我 declare/define 这样的变量:
__device__ constexpr int test{5};
我收到一个错误
error: A __device__
variable cannot be marked constexpr
我在指南中找不到该限制。指南说:
I.4.20.9. __managed__
and __shared__
variables cannot be marked with the
keyword constexpr.
此外,我的同事使用相同的主要编译器版本(11)没有这个错误。
究竟是什么导致我的机器出现此错误?
在 CUDA 11.2 中,不允许这样使用。见 here:
G.4.16.9. __device__/__constant__/__shared__
variables
__device__
, __constant__
and __shared__
variables cannot be marked with the keyword constexpr
.
在 CUDA 11.4(及更高版本)中,这种用法是允许的。
编译器允许的行为更改发生在 CUDA 11.2.0 版本和 CUDA 11.4.0 版本之间。
大概路过的机器的 CUDA 11 版本比你的更新。
如果我 declare/define 这样的变量:
__device__ constexpr int test{5};
我收到一个错误
error: A
__device__
variable cannot be marked constexpr
我在指南中找不到该限制。指南说:
I.4.20.9.
__managed__
and__shared__
variables cannot be marked with the keyword constexpr.
此外,我的同事使用相同的主要编译器版本(11)没有这个错误。
究竟是什么导致我的机器出现此错误?
在 CUDA 11.2 中,不允许这样使用。见 here:
G.4.16.9.
__device__/__constant__/__shared__
variables__device__
,__constant__
and__shared__
variables cannot be marked with the keywordconstexpr
.
在 CUDA 11.4(及更高版本)中,这种用法是允许的。
编译器允许的行为更改发生在 CUDA 11.2.0 版本和 CUDA 11.4.0 版本之间。
大概路过的机器的 CUDA 11 版本比你的更新。