【发布时间】:2013-08-08 16:27:23
【问题描述】:
我正在使用 OpenCL,我需要 memset() 全局设备内存中的某个数组。 CUDA 有一个类似memset() 的 API 函数,但 OpenCL 没有。我阅读了this,在那里我找到了两种可能的选择:
- 在主机上使用
memset()和一些暂存缓冲区,然后clEnqueueWriteBuffer()将其复制到设备上的缓冲区。 -
将以下内核入队:
__kernel void memset_uint4( __global uint4* mem, __private uint4 val) { mem[get_global_id(0)] = val; }
哪个更好?或者更确切地说,在哪种情况下/哪个平台比另一个更好?
注意:如果归零内存的特殊情况值得特殊处理,那也很高兴知道。
【问题讨论】:
标签: performance opencl memset