【问题标题】:How do I know if an OpenCV method has an OpenCL implementation我如何知道 OpenCV 方法是否具有 OpenCL 实现
【发布时间】:2018-06-12 14:29:06
【问题描述】:

我一直在试图弄清楚一个特定的 OpenCV (3.4) 方法是否有一个 OpenCL 实现支持它。我找到了这个帖子:

How to know if an OpenCV 3.0 algorithm has an OpenCL implementation in the transparent API

我将其解释为“使用 GPU 分析器运行代码并查看会发生什么”,但这似乎是一种非常低效的方法。有没有更系统的方法可以找到 opencl 实现?

我想要此信息的原因是我想避免在无法获得任何收益时将数据传递给设备。

【问题讨论】:

  • 我对 OpenCV 不是很熟悉,但根据我的阅读,要使用 OpenCL,您需要使用 cv::UMat 类型。因此,如果某些算法在 GPU 上运行良好,则使用 cv::Mat 类型。 stackoverflow.com/questions/33602675/… 可能有用。
  • @kanna 谢谢,始终使用 UMat 的问题是图像数据不断地被复制到设备内存中或从设备内存中复制出来,这可能会非常昂贵。我希望有更多的控制权。

标签: opencv opencl


【解决方案1】:

我使用调试器单步执行功能,一开始有一个开关,如果你已经用 OpenCL 编译过 OpenCV 并且可执行文件在有 GPU 的机器上运行,则调用 ocl 实现。

其他选项:

  • 查看 OpenCV 2.x 的 ocl 命名空间文档
  • 搜索 ocl 实现的源代码。在大多数情况下,ocl 函数位于模块的子目录中。例如。模块\照片\src\opencl\nlmeans.cl

【讨论】:

  • 花了更多时间我认为最好的方法是查看源代码,看看是否存在 ocl 开关。谢谢!
猜你喜欢
  • 2016-04-02
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 2021-07-29
相关资源
最近更新 更多