分享

CUDA 的硬件单元映射

 昵称12278894 2013-08-19

20跨时空对决 四代NV显卡激战CUDA-Z

CUDA计算单元示意图

1计算单元:

        上图是 CUDA GPU 计算单元简图。其中,SM 代表流多处理器(Stream Multiprocessors),即 CUDA 的计算核心部件。每个 SM 又包括 个标量流处理器 SPStream Multiprocessor),以及少量的其他计算单元。在商业宣传中,GPU往往被说成拥有数百个“核”,这里的“核”指的通常是 SP 单元的数量。实际上 SP 只是执行单元并不是完整的处理核心。拥有完整前端(Front-End)的处理核心,必须包括取指、解码、分支逻辑和执行单元。因此,将 SM 称为“核”更加贴切。隶属于同一 SM 的 个 SP 共用一套取指与发射单元,也共用一块共享存储器。

2、线程结构:

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

3Block

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

4Warp

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

跨时空对决 四代NV显卡激战CUDA-Z
线程关系与存储结构示意图

5、执行模型:

        CUDA 采用了 SIMTSingle InstructionMultiple Thread,单指令多线程)执行模型,SIMT 是对 SIMDSingle InstructionMultiple Data,单指令多数据)的一种改进。SIMD 中的向量宽度受到硬件制约,是显式的,固定的,数据必须打包成向量后才能被处理。而在 SIMT 中,执行数据的宽度将作为硬件细节被隐藏起来,硬件可以自动地适应不同的执行宽度。例如一个 block 有若干个 warp 组成,执行宽度可以在 1~512 线程之间变化。如果按照 SIMD 模型设计 CUDA,每个 block 的执行宽度都必须是一个 warp,即 32 个线程,这无疑会大大降低编程的灵活性。另外一个不同是 SIMD 的向量中的元素相互之间可以自由通信,因为它们存在于相同的地址空间(位于同一寄存器);而 SIMT 中的每个线程的寄存器都是似有的,线程之间只能通过共享存储器和同步机制进行通信。



参考链接:

http://cache./c?m=9d78d513d99206f90bfa940f1a60d3716f5697624cc0a01268a5955f93151a1e5321a3e52878564291d27d141cb20c19afe73605350624bcd9999f4aaaeacf77388850652c01da16579204f58d197bdc209259ebb81991bce732e5add2ced45250cb56076d87848d4d00639029af&p=8f3ddc5994904eac5ebd9b7d0d17943e&newp=8270d51985cc42a91bbd9b7d0d179e2c5c5bc4387ebad01f7e97&user=baidu&fm=sc&query=CUDA+%D6%D0%B5%C4+SM&qid=&p1=5


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多