Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于OpenCL的OpenCV方块实现性能差_C++_Opencv_Opencl - Fatal编程技术网

C++ 基于OpenCL的OpenCV方块实现性能差

C++ 基于OpenCL的OpenCV方块实现性能差,c++,opencv,opencl,C++,Opencv,Opencl,尝试运行generic squares.cpp示例: 我有一台带有AMD Radeon HD 6750M的Macbook Pro,在/opt/AMDAPP上安装了正确的OpenCL库,还有一台CMake编译的OpenCV2.4,可以正确检测CL库。此外,我正在使用fglrx更新来利用专有驱动程序。然而,性能似乎几乎是CPP运行时的2倍。我尝试了大约200次迭代,也遇到了同样的问题 内置:g++-o square.out square.cpp-L/usr/local/lib-L/opt/AMDA

尝试运行generic squares.cpp示例:

我有一台带有AMD Radeon HD 6750M的Macbook Pro,在/opt/AMDAPP上安装了正确的OpenCL库,还有一台CMake编译的OpenCV2.4,可以正确检测CL库。此外,我正在使用fglrx更新来利用专有驱动程序。然而,性能似乎几乎是CPP运行时的2倍。我尝试了大约200次迭代,也遇到了同样的问题

内置:g++-o square.out square.cpp-L/usr/local/lib-L/opt/AMDAPP/lib-I/usr/local/include-I/opt/AMDAPP/include-lopencv_core-lopencv_highgui-lopencv_ocl-lopencv_gpu-lopencv_imgproc-lOpenCL

结果:

cpp平均时间:233.192ms


ocl平均时间:568.043ms

我在装有FirePro V5900的Windows上看到了相同的行为

cpp: 66ms
ocl: 90ms

样品进行预热步骤。也许迭代次数不够。

我看不出有什么问题。我想问题是隐含的:为什么硬件加速版本比CPU版本慢。是的。为什么GPU的运行速度会慢一些?当你第一次运行OpenCL内核时,GPU仍然需要退出省电模式,所以这个运行总是需要更长的时间。通常情况下,一个会在操作上循环几次以唤醒GPU,然后计时第二个循环以重复该操作几百次。这是可以理解的。因此,我提到运行它大约200次迭代