当前位置: 代码迷 >> 高性能计算 >> OpenCL用来多核CPU运算
  详细解决方案

OpenCL用来多核CPU运算

热度:144   发布时间:2016-05-11 09:15:05.0
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上的实现部分。
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!
 
  • 最近登录:Tue Feb 28 20:21:42 CST 2017
  • 最近登录:Tue Feb 28 20:21:42 CST 2017
  • 最近登录:Tue Feb 28 20:21:42 CST 2017
  • 最近登录:Tue Feb 28 20:21:42 CST 2017
  • 最近登录:Tue Feb 28 20:21:42 CST 2017