热点推荐
ZOL首页 > 显卡 > 评测 >

强大的线程调度能力

改变翻天覆地 史上最全Fermi架构解读

CBSi中国·ZOL 作者:中关村在线 濮元恺 责任编辑:龚力成 【原创】 2010年03月26日 06:14 评论
在本页阅读全文(共16页)

    ●强大的线程调度能力

    关于线程的调度问题,我们首先需要了解一些G80以来CUDA架构的线程关系。

    线程结构:CUDA将计算任务映射为大量的可以并行执行的线程,并且硬件动态调度和执行这些线程。Kernel以线程网格(Grid)的形式组织,每个线程网格由若干个线程块(block)组成,每个线程块又由若干个线程(thread)组成。实质上,kernel是以block为单位执行的,CUDA引入Grid只是用来表示一系列可以被并行执行的block的集合。各block是并行执行的,block间无法通信,也没有执行顺序。目前一个kernel函数中有一个grid,而未来支持DX11的硬件采用了MIMD(多指令多数据)架构,允许在一个kernel中存在多个不同的grid。


30亿晶体管的咆哮
线程、线程块和执行内核的关系

    Block:CUDA中的kernel函数实质上是以block为单位执行的,同一block中的线程需要共享数据,因此它们必须在同一个SM中发射,而block中的每一个线程(thread)则被发射到一个SP上执行。一个block必须被分配到一个SM中,但是一个SM中同一时刻可以有多个活动线程块(active block)在等待执行,即在一个SM中可以同时存在多个block的上下文。当一个block进行同步或者访问显存等高延迟操作时,另一个block就可以“趁虚而入”,占用GPU资源,最大限度利用SM的运算能力。

    Warp:在实际运行中,block会被分割为更小的线程束,这就是warp。线程束的大小由硬件的计算能力版本决定。在目前所有的NVIDIA GPU中,一个线程束由连续的32个线程组成。warp中的线程只与thread ID有关,而与block的维度和每一维的尺度没有关系,这种分割方式是由硬件决定的。以GT200的角度来解释,warp中包含32条线程是因为每发射一条warp指令,SM中的8个SP会将这条指令执行4遍。在硬件中实际运行程序时,warp才是真正的执行单位。虽然warp是一个由硬件决定的概念,在抽象的CUDA编程模型中并不存在,但是其影响力绝对不容忽略。

上一页 1 ...5 6 7 8 9 ...16 下一页
频道热词:华硕主板  Intel  AMD  
视觉焦点
显卡评测热点
排行 文章标题
TOP10周热门显卡排行榜
  • 热门
  • 新品