我想确定CUDA内核中的最大int
值。很遗憾,我无法找到类似于std::numeric_limits
的CUDA。尝试使用::std
函数会导致错误:
error : calling a __host__ function("std::numeric_limits<int> ::max") from a __global__ function("xyz_kernel") is not allowed C:\cuda.cu(153) (col. 10)
有没有办法通过内核确定所需的值,还是应该将其作为参数传递?
答案 0 :(得分:3)
它存在但不像std::numeric_limits
那样通用。有关列表,请参阅this page。
例如,您可以NPP_MAX_32U
,但这是32-bit unsigned
特有的,而不是int
类型,其宽度取决于系统。
答案 1 :(得分:0)
我写过类似的东西:
<limits>
(named limits.cuh
)基本上这意味着将__host__ __device__
添加到一堆函数中,并将所有结构放在std
以外的命名空间中。
注意:
<limits>
<limits>
可能存在一些宏观冲突(我不确定)。