作者:迷-糊-娃娃 | 来源:互联网 | 2023-05-23 19:21
我们来看看nVidia Fermi Compute Architecture.它说:
第一款基于Fermi的GPU采用30亿个晶体管实现,具有多达512个CUDA内核.CUDA核心为每个线程执行浮点或整数指令.512个CUDA内核由16个SM组成,每个内核32个内核.
[...]
每个CUDA处理器都有一个完全流水线的整数算术逻辑单元(ALU)和浮点单元(FPU).
[...]
在Fermi中,新设计的整数ALU支持所有指令的完整32位精度,符合标准编程语言要求.整数ALU也经过优化,可有效支持64位和扩展精度操作.V
据我所知,以及对我来说不清楚的是,GPU在所谓的warp中执行线程,每个warp由~32个线程组成.每个warp只分配给一个核心(是真的吗?).这是否意味着,单个SM的32个内核中的每一个都是SIMD处理器,其中一条指令处理32个数据部分?如果是这样,那么为什么我们说warp中有32个线程,而不是单个SIMD线程?为什么内核有时被称为标量处理器,而不是矢量处理器?
1> Robert Crove..:
每个warp只分配给一个核心(是真的吗?).
不,这不是真的.warp是32个执行线程的逻辑集合.要从单个warp执行单个指令,warp调度程序通常必须调度32个执行单元(或"核心",尽管"核心"的定义有些松散).
核心实际上是标量处理器,而不是矢量处理器.32个核心(或执行单元)由warp调度程序编组,以跨32个线程执行单个指令,这是"SIMT"名字来源的地方.
我想这个问题可以转化为关于GPU执行机制的完整教程.我鼓励你利用现有的资源,因为这涵盖了其他地方多次覆盖的基础.SM中的warp调度程序可以在每个指令周期从*任何可用的warp*中选择新指令.可用的warp可能来自当前驻留在SM上的任何线程块.指令*不需要来自相同的warp或threadblock*,从一个周期到下一个周期.GPU是一种延迟隐藏的机器,并且喜欢有许多可用的warp.
幻灯片中的绿点表示硬件资源(执行单元),而不是线程.图片具体表示"GK110框图".这是一个硬件芯片,而不是一个线程集合.当选择其中一条指令执行时,单个warp在32个执行单元中"扩展"该时钟周期.在下一个时钟周期,可以在那些相同的执行单元上安排不同的warp.SM以某种未定义的顺序执行warp - 基于指令选择的特定顺序.
GK110每个SM没有32个核心.这在任何地方都没有说明.(也许你很困惑*Fermi* - 你最初的白皮书链接 - 与*Kepler* - 视频中讨论的内容.)GK110每个SM有192个核心.这就像说图中的单个SM中有192个绿色页面."执行单位=核心"是."核心=一个线程"没有.CPU核心是否等于CPU线程?它不是.一个是硬件资源.另一个是指令的逻辑集合.当warp调度程序在那里放置指令时,线程(SW)*将*映射到绿点(HW)*.
当我说执行单位时,我的意思是,为了讨论的目的,一个核心.GK110 SM有192个实际上是一个执行单元,每个时钟可以退出1个单精度浮点运算(2个用于融合乘法加法).还有其他类型的执行单元 - 每个SM的数量不同 - 用于执行其他类型的操作,例如双精度浮点,超越函数,加载/存储操作等.指令序列的执行将通常不完全由单个核心或执行单元(类型)执行
我相信Kepler warp调度程序可以在同一个循环中执行来自同一线程的2条指令,但受某些限制.参考[GK110白皮书](http://www.nvidia.com/content/PDF/kepler/NVIDIA-kepler-GK110-Architecture-Whitepaper.pdf),"Kepler的quad warp调度程序选择了四个warp和两个独立的指令每个周期可以发送每个周期"
2> einpoklum - ..:
CUDA“核心”可以被认为是SIMD通道。
首先让我们回想一下,术语“ CUDA核心”是nVIDIA的营销口号。这些不是CPU具有内核的核心。同样,“ CUDA线程”与我们在CPU上已知的线程不同。
与GPU上的CPU内核等效的是“对称多处理器”:它具有自己的指令调度程序/调度程序,自己的L1高速缓存,自己的共享内存等。它是CUDA线程块,而不是翘曲分配给GPU内核(即流式多处理器)的对象。在SM中,将选择经纱以为整个经纱排定指令。从CUDA的角度来看,它们是32个独立的线程,这些线程是指令锁定的。但这与说warp就像单线程,只执行32通道宽的SIMD指令一样,没有什么不同。当然,这并不是一个完美的类比,但我觉得这很不错。您对CPU SIMD通道不太了解的是对正在执行的通道的掩盖,其中不活动的通道不会对有效通道的寄存器值设置,内存写入等产生影响。
我希望这对您有直觉的意义(或者您在过去两年中已经弄清楚了这一点)。