【发布时间】:2011-02-06 21:57:43
【问题描述】:
当我为一个多核编程课程完成我的项目编码时,我想到了一些非常奇怪的事情,我想和你讨论一下。
我们被要求创建任何能够显着改进多核平台编程的程序。我决定尝试在 GPU 上编写代码来试用 OpenCL。我选择了矩阵卷积问题,因为我对它非常熟悉(我之前使用 open_mpi 对其进行了并行化,对大图像有很好的加速)。
就是这样,我选择了一个大的 GIF 文件 (2.5 MB) [2816X2112] 并运行顺序版本(原始代码),平均得到 15.3 秒。
然后,我在 MBP 集成 GeForce 9400M 上运行我刚刚编写的新 OpenCL 版本,平均时间为 1.26 秒。到目前为止一切顺利,速度提升了 12 倍!!
但现在我进入我的节能面板打开“图形性能模式”该模式关闭 GeForce 9400M 并打开我系统的 Geforce 9600M GT。苹果表示这张卡的速度是集成卡的两倍。
猜猜看,我使用kick-ass显卡的平均时间是3.2秒……我的9600M GT似乎比9400M慢了两倍多..
对于那些倾向于 OpenCL 的人,我会在开始之前将所有数据复制到远程缓冲区,因此实际计算不需要往返于主 ram。另外,我让 OpenCL 确定最佳的本地工作大小,因为我读到他们在计算出该参数方面做得很好。
有人知道吗?
编辑:这里有makefile的完整源代码http://www.mathieusavard.info/convolution.zip
cd gimage
make
cd ../clconvolute
make
put a large input.gif in clconvolute and run it to see results
【问题讨论】:
-
换显卡后有没有重启电脑? AFAIK 在这些计算机上这是必需的。
-
我注销了..当你想更换显卡时,它会强制你注销并登录+我的程序输出当前使用的显卡的名称,这样我就可以确定哪个正在运行..
-
尝试重新启动.. 还尝试通过使用带有掩码 12X12 的 3264x2448 图像来增加问题大小,但结果相同...
标签: opencl hardware-acceleration