错误:表达式必须具有整数或枚举类型

时间:2014-11-21 03:26:22

标签: c cuda

在CUDA C中,为什么以下代码

findMinMax<<sizeof(lum)/1024,1024>>(lum,&min_logLum,&max_logLum);

发出此错误?

error: expression must have integral or enum type

1 个答案:

答案 0 :(得分:6)

您需要使用 triple 角度括号作为内核启动语法的一部分:

findMinMax<<<sizeof(lum)/1024,1024>>>(lum,&min_logLum,&max_logLum);

这应解决编译错误,前提是其余部分正确(例如,参数集与内核原型匹配)。

请注意,启动内核的方式还有一些其他问题:

  • 您将每个网格的块数向下舍入而不是向上。例如,如果sizeof(lum)的计算结果为1500,则仍然只启动1个1024个线程的块。这可能不是你打算做的。

  • 您将主机指针&min_logLum&max_logLum传递给内核,这可能不是您打算在此处执行的操作,但是如果没有看到剩余的内容,很难说你的代码。