浅析cuda应用策略

上一篇 / 下一篇  2010-01-31 22:21:26

    cuda很强大,但是再强大的工具都有它的局限性。
    常言道:尺有所短,寸有所长。
    所以如果在cuda不擅长的领域使用cuda,那么起不了好的作用反倒浪费精力和资源,也是非常正常的。
   因此启动一个项目之前,必须先评估好你的项目是否适合cuda。

   要做出这个评估,就必须对cuda的技术特性有一个很好的理解。
    cuda的特点无非是这么几个:众核,需要从内存把数据拷贝到显存,从内存到显存的带宽相对非常慢。
     所以如果一个项目,要处理的数据可并行性非常差,那就不能用cuda。怎么才叫并行性好呢?那就是:
    首先可以找到一种分治策略,就是这个问题可以划分成很多子问题,子问题的求解相对简单很多,而且可以通过子问题很容易的求出最终解;
     其次这种分治策略必须对彼此间执行顺序依赖很弱,最好不要有依赖。
满足第一条的话,这个问题可以从单线程转换为多线程问题。满足第二条的话,那么转换成多线程以后,性能提高空间会非常大。第二条性质越好,那么线程数增加量和性能增量之比越接近正比。
    但满足上面两条,只能说这个问题适合并行化。
    cuda的另一个主要限制,就是从内存到显存的带宽问题。也就是说,只有你的项目可以设计一种方案,不需要太多内存和显存之间的数据同步,才能有效的发挥cuda的价值。换言之,如果你的方案里,并行化带来的效率提升是10分,而需要投入8分甚至更多的费用在内存和显存的同步上,那就不适合cuda。

    所以大致面评估一个项目是否适合cuda的参数就是下三条:
     1.可并行性。
     2.异步性。
     3.与内存数据的同步依赖性。

  同样这三条,也是实施cuda项目的策略。

TAG:

引用 删除 kennyCU   /   2010-10-26 19:36:47
引用 删除 kennyCU   /   2010-10-26 19:36:10
1
KUDA畅想曲 引用 删除 洛欣   /   2010-02-01 11:40:34
浅析cuda应用策略这篇文章已被推荐到CUDA技术交流圈圈子中。
cu888的个人空间 引用 删除 cu888   /   2010-02-01 09:12:32
不错
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2012-05-25  
  12345
6789101112
13141516171819
20212223242526
2728293031  

我的存档

数据统计

  • 访问量: 591
  • 日志数: 1
  • 建立时间: 2010-01-31
  • 更新时间: 2010-01-31

RSS订阅

Open Toolbar