读书人

OpenCL用来多核CPU运算

发布时间: 2013-04-09 16:45:09 作者: rapoo

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上的实现部分。

读书人网 >云计算

热点推荐