是否有一个等同于std :: numeric_limits的CUDA?

时间:2014-06-30 20:06:02

标签: c++ cuda

我想确定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)

有没有办法通过内核确定所需的值,还是应该将其作为参数传递?

2 个答案:

答案 0 :(得分:3)

它存在但不像std::numeric_limits那样通用。有关列表,请参阅this page

例如,您可以NPP_MAX_32U,但这是32-bit unsigned特有的,而不是int类型,其宽度取决于系统。

答案 1 :(得分:0)

我写过类似的东西:

CUDA-compatible version of <limits> (named limits.cuh

基本上这意味着将__host__ __device__添加到一堆函数中,并将所有结构放在std以外的命名空间中。

注意:

  1. 许可。它基于G ++的<limits>
  2. 使用设备端代码(仅限)进行了一些但不是广泛的测试。
  3. 实际<limits>可能存在一些宏观冲突(我不确定)。