Как следует из названия, я ищу, как эффективно поменять местами два буфера OpenCL. Мое ядро использует два буфера gloabl, один в качестве ввода и один в качестве вывода. Однако я вызываю свое ядро в цикле for с одним и тем же NDRange, каждый раз устанавливая аргументы ядра, ставя ядро в очередь и меняя буферы местами, поскольку предыдущий выходной буфер будет начальным значением входного буфера для следующей итерации.
Как здесь правильно поменять местами эти два буфера? Я предполагаю, что копирование буфера обратно на хост в один из уже распределенных массивов и копирование его в следующий входной буфер с использованием clEnqueueWriteBuffer()
и clEnqueueReadBuffer()
является неэффективным способом. В противном случае я просто использую временную переменную cl_mem
для обмена.