如果我在我的内核函数中调用OpenCV GPU模块中的函数,它会工作并且更快吗?

时间:2014-09-26 13:02:05

标签: opencv cuda

OpenCV有一个gpu. GPU-accelerated Computer Vision模块(http://docs.opencv.org/modules/gpu/doc/gpu.html)。有许多功能已经使用GPU技术。所以我可以直接使用OpenCV应用的功能。但是我想知道如果我编写自己的内核会更快,并且在每个内核中我都会调用OpenCV GPU模块的功能。这是我有很多图像的情况。为了处理每个图像,我在GPU模块中调用了OpenCV函数。然后它将是并行嵌套并行的。

1 个答案:

答案 0 :(得分:2)

我的问题并不完全清楚,但我想说的是:除非有人已经使用你想到的方法实现了相同的算法,否则不可能说哪个会更快。分享了关于基准测试的报告。

涉及多个因素:

  • 这取决于您尝试实施的操作类型:具有高算术强度的技术更适合GPU,但是,并非所有问题都可以为GPU建模。< / LI>
  • 输入图像的大小很重要:浪费时间将数据从RAM发送到GPU可能最终无法进行补偿,因此在小型图像上运行CPU的算法会更快。
  • CPU / GPU的型号/功能:如果计算机上有一个非常糟糕的GPU,那么在CPU上运行算法可能会更好。

我所说的是:不要假设OpenCV GPU的模块总是以比你得到的CPU更快的速度运行它的算法。测试它,测量它!确切知道的唯一方法是通过实验和基准测试。