嘿所有,我在Nvidia的指南中没有看到OpenCL中__constant变量分配的语法方式。
当我调用clCreateBuffer时,是否必须给它标志CL_MEM_READ_ONLY。我似乎并不介意我现在把它设置为CL_MEM_READ_WRITE,虽然我打赌尝试写入内核中的常量缓存会搞砸了。
在主机方面我需要记住哪些问题或特殊事项?如果我在设备内核代码中将声明声明为__constant,那么只要我不写入它就可以使用常量缓存变量吗?
答案 0 :(得分:2)
是的,基本上就是这样。您必须记住,常量缓存的大小限制为64 KB。由于__constant地址空间本质上是只读的,因此如果您尝试写入,编译器应该会抱怨。
不幸的是,__恒定内存完全与NVidia的实现有点混乱。偶尔编译器会发出错误的代码,从常量内存中读取只会返回零。截至260.x驱动程序系列,他们还没有解决问题。