C++ 基于OpenCL的OpenCV方块实现性能差
尝试运行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.192msC++ 基于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
ocl平均时间:568.043ms我在装有FirePro V5900的Windows上看到了相同的行为
cpp: 66ms
ocl: 90ms
样品进行预热步骤。也许迭代次数不够。我看不出有什么问题。我想问题是隐含的:为什么硬件加速版本比CPU版本慢。是的。为什么GPU的运行速度会慢一些?当你第一次运行OpenCL内核时,GPU仍然需要退出省电模式,所以这个运行总是需要更长的时间。通常情况下,一个会在操作上循环几次以唤醒GPU,然后计时第二个循环以重复该操作几百次。这是可以理解的。因此,我提到运行它大约200次迭代