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

C++ OpenCL相同代码不同结果:1.Nvidia760 2.Nvidia560 3.Vivante,c++,opencl,gpu,sift,C++,Opencl,Gpu,Sift,我使用OpenCL进行图像处理(特别是关于SIFT算法) 实际上,我使用两个大小不同的图像测试了相同的代码。一个是1024*768,另一个是512*384。我的opencl GPU平台是1。英伟达760(个人电脑,2G)2。英伟达560(个人电脑,1G)3。Vivante GPU(嵌入式飞思卡尔i.MX6,1G) 当我使用512*384图像时,N760和N560都正常,但Vivante GPU不工作 然后我把它变成了一个两倍大小的图像1024*768。 N760仍然正常,但N560上的结果都是黑

我使用OpenCL进行图像处理(特别是关于SIFT算法)

实际上,我使用两个大小不同的图像测试了相同的代码。一个是1024*768,另一个是512*384。我的opencl GPU平台是1。英伟达760(个人电脑,2G)2。英伟达560(个人电脑,1G)3。Vivante GPU(嵌入式飞思卡尔i.MX6,1G)

当我使用512*384图像时,N760和N560都正常,但Vivante GPU不工作

然后我把它变成了一个两倍大小的图像1024*768。 N760仍然正常,但N560上的结果都是黑色的(表示根本没有处理)

在我看来,如果图像太大,处理时间应该更长,为什么根本没有结果?既然代码是一样的,为什么它不能在嵌入式GPU上工作呢

我想在这段代码中有两点需要注意

  • 当我做高斯模糊和特征描述时,临时图像数量很多。可能临时映像使用了太多GPU内存(超过1G?太大…)

  • 不同图像的计算单元数也不同,是不是因为超出了大图像的计算单元数

  • 无论如何,为什么他们不能解释为什么即使我们使用了一个非常小的图像,同样的代码也不能在嵌入式GPU上运行


    谢谢!我对这个问题感到非常头痛…

    与图像像素数相关的工作组和/或工作项的数量是多少?您是否在内核中使用2d work group.item维度?请检查返回代码并提供一些源代码。