我使用OpenCL进行图像处理(特别是关于SIFT算法)。
实际上,我使用两个不同大小的图像测试了相同的代码。一个是1024 * 768,另一个是512 * 384。我的opencl GPU平台是1. NvidIA 760(PC,2G)2。Nvidia 560(PC,1G)3。Vivante GPU(嵌入式Freescale i.MX6,1G)。
当我使用512 * 384图像时,N760和N560都可以,但Vivante GPU无法正常工作
然后我将它变成了1024 * 768的双倍尺寸图像。 N760仍然可以,但N560上的结果都是黑色的(完全没有处理)。
在我的想法中,如果图像太大,处理时间应该更长,为什么根本没有结果呢?既然代码是相同的,为什么它不能在嵌入式GPU上工作呢?
我想我可能会在这段代码中关注两点。
当我进行高斯模糊和特征描述时,临时图像编号很多。也许临时图像使用了太多的GPU内存(超过1G?它太大了......)?
不同图像的计算单位编号也不同,是因为超出了大图像的计算单位数?
无论如何,为什么他们可能无法解释为什么相同的代码无法在嵌入式GPU上运行,即使我们使用了非常小的图像。
谢谢!我对这个问题感到非常头疼......