我正在将现有的Reed-Solomon解码代码移植到OpenCL 我的内核中有一些本地数组,比如uint myarray [256];在当地的职能。 而且我有很多memset函数,我没有使用它们。 我可以写一个循环填充它们,但这可能是低效的。另外,关于编写这样一个循环的一些建议也是受欢迎的,因为OpenCL似乎没有memset。
但OpenCL抱怨缺少memset的方式似乎没有完全错过它
警告:用类型隐式声明C库函数'memset' 'void *(void *,int,unsigned long)'
并建议包含<string.h>
但未能找到它
fatal error: <string.h> file not found.
答案 0 :(得分:1)
OpenCL设备代码中没有memset(也没有任何其他C标准库),因此您需要手动循环(可能带有#pragma unroll
提示),或者,如果是数组在OpenCL意义上实际上是local
(即在工作组中的工作项之间共享)使每个工作项清除其中一个元素(效率更高)。