在CUDA C中,为什么会出现以下代码
findMinMax<<sizeof(lum)/1024,1024>>(lum,&min_logLum,&max_logLum);
Run Code Online (Sandbox Code Playgroud)
给出这个错误?
error: expression must have integral or enum type
Run Code Online (Sandbox Code Playgroud)
您需要使用三角形括号作为内核启动语法的一部分:
findMinMax<<<sizeof(lum)/1024,1024>>>(lum,&min_logLum,&max_logLum);
Run Code Online (Sandbox Code Playgroud)
这应该解决编译错误,前提是其余的是正确的(例如,参数集与内核原型匹配).
请注意,启动内核的方式还有一些其他问题:
您将每个网格的块数减少而不是向上.例如,如果sizeof(lum)计算结果为1500,则仍然只启动1个1024个线程的块.这可能不是你打算做的.
你传递主机指针&min_logLum和&max_logLum内核,这可能不是你打算在这里做的,但是如果没有看到你的其余代码就很难分辨.