我正在使用OpenCL,并且需要在全局设备内存中对某些数组执行memset()
操作。CUDA有一个类似于memset()
的API函数,但是OpenCL没有。我阅读了这篇文章,找到了两种可能的替代方法:
- using
memset()
on the host with some scratch buffer, thenclEnqueueWriteBuffer()
to copy that to the buffer on the device. Enqueueing the following kernel:
__kernel void memset_uint4( __global uint4* mem, __private uint4 val) { mem[get_global_id(0)] = val; }
请注意:如果将内存清零的特殊情况需要特别处理,那么也请告知。