如何使用OpenCL处理GPU内存总量过大的图像

时间:2016-05-06 09:45:08

标签: c++ opencl

因此,在OpenCL中编写一个内核非常容易,它需要输入几个输入Image3Ds的几个输出Image3D并使用它们。只要所有输入和输出图像都适合GPU内存,它就很容易。现在这当然不是这种情况,因为当你提高分辨率时,Image3D的大小会相当快。 因此,假设一个内核可以说4个输入图像和3个输出图像,那么在适合GPU的块中处理它们的最佳选择是什么。有自动流/缓冲的形式吗?

这里最好的意思是:1)速度快,2)用户编写的代码很少(两者很好的混合)

1 个答案:

答案 0 :(得分:1)

对于3D图像,您可以像解决2D图像一样解决这个问题:使用图块。当你没有足够的RAM用于大图像时,Photoshop会这样做;它会从磁盘中引入磁贴,处理它们,然后将结果写出来。迭代图像。对于3D,您可以使用适合GPU处理的3D图块(小立方体)进行处理。

平铺引擎可以是简单的也可以是复杂的,具体取决于要完成的图像处理的类型。此外,某些算法(如递归高斯模糊)需要访问所有源像素,因此您可能需要存储中间结果,加载更多图块,并运行更多内核以便在图块集中工作。

相关问题