我正在阅读《专业CUDA C编程》,并且在《GPU体系结构概述》部分中:
CUDA采用单指令多线程(SIMT)架构来管理和执行32个线程组(称为扭曲)的线程。线程束中的所有线程同时执行同一条指令。每个线程都有自己的指令地址计数器和寄存器状态,并根据自己的数据执行当前指令。每个SM将分配给它的线程块划分为32个线程扭曲,然后调度它在可用硬件资源上执行。
SIMT体系结构类似于SIMD(单指令多数据)体系结构。SIMD和SIMT都通过将同一条指令广播到多个执行单元来实现并行性。一个关键的区别是SIMD要求向量中的所有向量元素必须在未分配的同步组中一起执行,而SIMT允许同一线程束中的多个线程独立执行。即使扭曲中的所有线程都从同一程序地址一起开始,但各个线程可能具有不同的行为。SIMT使您可以为独立的标量线程编写线程级并行代码,并为协调线程编写数据并行代码。SIMT模型包含SIMD不具备的三个关键功能:
➤每个线程都有自己的指令地址计数器。
➤每个线程都有其自己的寄存器状态。
➤每个线程可以有一个独立的执行路径。
第一段提到“ All threads in a warp execute the same instruction at the same time.
”,而第二段说“ Even though all threads in a warp start together at the same program address, it is possible for individual threads to have different behavior.
”。这让我感到困惑,并且上面的陈述似乎是矛盾的。有人可以解释吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句