【发布时间】:2013-07-08 21:15:15
【问题描述】:
尝试运行通用 squares.cpp 示例: https://github.com/Itseez/opencv/blob/master/samples/ocl/squares.cpp
我有一台带有 AMD Radeon HD 6750M 的 Macbook Pro,并在 /opt/AMDAPP 中安装了正确的 OpenCL 库,以及一个 CMake 编译的 OpenCV2.4,可以正确检测到 CL 库。此外,我正在使用 fglrx-updates 来利用专有驱动程序。但是,性能似乎几乎是 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
【问题讨论】:
-
这里没有问题。
-
我认为这个问题是隐含的:为什么硬件加速版本比 CPU 慢。
-
是的。为什么 GPU 场景会更慢?
-
第一次运行 OpenCL 内核时,GPU 仍然需要退出省电模式,因此此运行总是需要更长的时间。通常情况下,会循环操作几次以唤醒 GPU,然后为第二次循环计时,该循环重复操作数百次。
-
可以理解。因此我提到运行它大约 200 次迭代