MyException - 我的异常网
当前位置:我的异常网» 高性能计算 » OpenCL用来多核CPU运算

OpenCL用来多核CPU运算

www.myexceptions.net  网友分享于:2013-04-10  浏览:28次
OpenCL用于多核CPU运算
这两天把OpenCL用在了多核cpu上,我用的i5-3470,开始跑了下nvidia提供的opencl样例程序“中值滤波”,我把代码更改了下,用i5的多核cpu跑了起来,测了一下,滤波一次,用cpu单核单线程串行运算时2.3秒滤波一次,用opencl给多核cpu进行并行计算,0.16秒滤波一次。i5-3470只有4核4线程啊。。。如何得到14倍左右的性能提升的?算法我也比较过代码了,基本上是一样的,只是一个写成了并行的kernel,一个是串行的for循环,没有相差太多

望高手能分析下原因,拯救我一下,寝食难安啊,万分感谢

------解决方案--------------------
那就可能是测时代码有问题。上代码。
------解决方案--------------------
引用:
引用:引用:这两天把OpenCL用在了多核cpu上,我用的i5-3470,开始跑了下nvidia提供的opencl样例程序“中值滤波”,我把代码更改了下,用i5的多核cpu跑了起来,测了一下,滤波一次,用cpu单核单线程串行运算时2.3秒滤波一次,用opencl给多核cpu进行并行计算,0.16秒滤波……


你说的有道理。
我觉得这可能是由于不同情况下调用开销的问题,CPU情况下,有很多逻辑运算单元参与循环操作,opencl情况下,可能有些逻辑工作已经蕴涵于kernel的设计之中。
另外, opencl在cpu上实现时,还会精心处理关于内存的使用,以减少内存冲突的几率。
以上只是我的猜测,具体可以参见《Heterogeneous computing with OpenCl》第六章关于opencl在cpu上的实现部分。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有