Каковы / являются наиболее быстрыми альтернативами memset () для OpenCL?
Я использую OpenCL, и мне нужноmemset()
некоторый массив в глобальной памяти устройства. CUDA имеетmemset()
-подобна API-функция, но OpenCL нет. Я читаюэтогде я нашел две возможные альтернативы:
memset()
на хосте с некоторым буфером нуля, затемclEnqueueWriteBuffer()
скопировать это в буфер на устройстве.Поставить в очередь (sp?) Следующее ядро:
__kernel void memset_uint4 (__ global uint4 * mem, __ private uint4 val) {mem [get_global_id (0)] = val; }
Как лучше? Или, скорее, при каких обстоятельствах / для каких платформ одна лучше другой?
Примечание: Если особый случай обнуления памяти заслуживает особого отношения, это тоже было бы полезно знать.