opencl和opencv 3.0 Beta

时间:2014-12-10 20:27:20

标签: c++ opencv opencl

为什么opencv 3.0 beta中没有openCL(ocl)?

我听说新的opencv透明地使用了opencl,但是当我在运行在intel核心i5(gpu HD400)上的Windows上进行测试时,由于在GPU上运行,我看不出任何速度提升。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:3)

有意删除OpenCV的Ocl模块。不再期望开发人员使用ocl::Canny之类的调用。这些方法将由OpenCV在内部调用。预计开发人员将使用presentation中所述的UMat结构。当OpenCL可用时,UMat包裹clmem。否则它默认为CPU。请参阅ocl.cpp

关于速度,我会在下面确保

  1. 在构建目录的cvconfig.h 中,检查OpenCL标志是ON还是OFF
  2. 在代码中, ocl::setUseOpenCL(true)
  3. 在代码中,使用UMat 代替Mat
  4. 然后检查FPS ,并调用ocl :: setUseOpenCL(true);
  5. 我期望看到的不是FPS的大幅增加。即使假设使用GPU,也可能存在必须在CPU / GPU内存之间复制数据并来回传输的情况,这可能会影响最终性能。我希望看到处理卸载到GPU并减少CPU的负担。不一定是速度增加。

答案 1 :(得分:0)

关于这些工具,您可以使用AMD的CodeXL来观察OpenCV / OpenCL的行为。您可以看到OpenCL API调用的顺序,使用的内核,它们的性能和源代码,数据缓冲区及其内容等。当然,所有这些只在AMD硬件上。我认为对于NVIDIA,ParallelInsight可以做同样的事情。对于英特尔,不知道哪种工具可以提供帮助。