OpenCL相同的代码不同的结果:1.Nvidia760 2.Nvidia560 3.Vivante

时间:2014-04-21 02:00:11

标签: c++ opencl gpu sift

我使用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上工作呢?

我想我可能会在这段代码中关注两点。

  1. 当我进行高斯模糊和特征描述时,临时图像编号很多。也许临时图像使用了太多的GPU内存(超过1G?它太大了......)?

  2. 不同图像的计算单位编号也不同,是因为超出了大图像的计算单位数?

  3. 无论如何,为什么他们可能无法解释为什么相同的代码无法在嵌入式GPU上运行,即使我们使用了非常小的图像。

    谢谢!我对这个问题感到非常头疼......

0 个答案:

没有答案