【发布时间】:2010-07-19 16:10:46
【问题描述】:
我最近一直在 linux 上编写一些 OpenCL 代码(ubuntu 10.4、ati Catalyst 10.4 和 ati sdk v2.1),它在 linux 上运行良好。
当我想在 Windows 上运行我的代码时,我得到程序构建错误的抱怨
“此声明没有存储类或类型说明符”
然后“全局变量必须在 addrSapce 常量中声明”
即使有一个无效的内核也不行,地狱我评论了代码,它仍然给出了同样的错误哈哈!
很奇怪,样本 r 工作得很好。当我将代码复制到示例项目中时,它给出了相同的错误。
我正在使用 windows 7 32 位、ati stream sdk v2.1 和 v10.6 驱动程序(因为我在任何地方都找不到适用于 windows 的 10.4,这很遗憾,因为 10.6 不能保证支持OpenCL,一路走好,哈哈!)
我把所有的内核都剪掉了,只剩下这个,我仍然遇到同样的错误,在这里
__kernel void set_float( __global float* buff ,
float v) {
buff[get_global_id(0)]=v;
}
【问题讨论】:
-
也许看看这个帖子:devforums.amd.com/forum/…
-
我已经看过那个帖子了,他的错误是在内核上方(外部)声明了一个全局变量,就像在你包含之后在 C 中声明一个全局变量以便它可以被所有函数使用,并且我的内核代码中没有类似的东西。我认为我得到“必须在 addrSpace 常量中声明全局变量”的原因是因为内核声明失败后的第一个错误,因此它认为参数是变量声明。
标签: opencl