为什么opencv 3.0 beta中没有openCL(ocl)?
我听说新的 opencv 透明地使用 opencl,但是当我在运行 intel core i5 (gpu HD400) 的 Windows 上测试它时,我看不到在 GPU 上运行的任何速度提升。
我是不是漏掉了什么?
最佳答案
OpenCV 的 Ocl 模块被有意移除。开发人员不再期望像调用那样使用 ocl::Canny
。这些方法将由 OpenCV 内部调用。开发人员应使用 UMat
结构,如 presentation 中所述。 .当 OpenCL 可用时,UMat
包装clmem
。否则它默认为 CPU。参见 ocl.cpp .
关于速度,我保证如下
- 在 build 目录的
cvconfig.h
中,检查 OpenCL 标志是 ON 还是 OFF - 在代码中,
ocl::setUseOpenCL(true)
- 在代码中,使用
UMat
代替Mat
- 然后在调用和不调用 ocl::setUseOpenCL(true) 的情况下检查 FPS;
我期望看到的不是 FPS 的急剧增加。即使假设使用了 GPU,也可能存在数据必须在 CPU/GPU 内存之间来回复制的情况,这可能会影响最终性能。我希望看到处理卸载到 GPU 并减轻 CPU 的负担。不一定提高速度。
关于c++ - opencl 和 opencv 3.0 测试版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410190/