1
我没有我的代码在我面前,但我正在做一个常见的场景,图片被采样,写入,重复。每次迭代都需要我将结果读回到CPU并再次将其返回给OpenCL。限制是图像是读取或写入,而不是两者。有没有办法在内核中完成所有这些工作,而不是将其循环回CPU?OpenCL图像过滤器迭代没有返回到主机?
我没有我的代码在我面前,但我正在做一个常见的场景,图片被采样,写入,重复。每次迭代都需要我将结果读回到CPU并再次将其返回给OpenCL。限制是图像是读取或写入,而不是两者。有没有办法在内核中完成所有这些工作,而不是将其循环回CPU?OpenCL图像过滤器迭代没有返回到主机?
您不需要将结果读回主机,但需要重写算法以使用多个步骤和附加纹理来存储中间结果。
您可能想进一步澄清您的问题。什么阻止你创建图像作为读写,并以类似乒乓的方式使用它们(更改每次迭代所读取的图像以及您所写的图像)? – Grizzly
没有必要将结果读回CPU(你的意思是RAM?)。读取/写入映像的唯一限制是,读取在同一内核调用中写入的数据将返回未定义的结果(请参阅Nvidia OpenCL编程指南)。如果这对你来说是一个问题,那么你可以有两个图像,一个读取,一个写入,每次迭代后切换。因此,请详细说明这一点,究竟是什么迫使您涉及CPU。否则,人们无法回答这个问题。 –