如何对CUDA SM进行扭曲计划?

时间:2014-05-08 02:43:31

标签: cuda

正如this question的答案所示,当SM包含8个CUDA内核(Compute Capability 1.3)时,32个线程的单个warp需要4个时钟周期来执行整个warp的单个指令。

这是在8个核心上同时运行的经线的第1道到第8道,然后是第9道到第16道,在第17道到第24道之后,最后是第25道到第32道。

我能理解这一点吗?

所以我的问题是,在新设备上,每个SM有32个(Compute Capability 2.0)或48个(2.1个)或192个(3.0个,Kepler)CUDA核心,但是warp大小仍然是32个。

  • 这些新SM的扭曲计划如何?
  • 将1号车道与32号车道一起运行,或者像上面提到的车道1到车道8,车道9到车道16,......在老CUDA SM上运行?

1 个答案:

答案 0 :(得分:12)

CUDA核心是SM中单精度浮点单元的数量。 SM还有其他执行单元,包括特殊功能单元(RSQRT,COS,SIN,...),双精度单元,加载存储单元,纹理单元,分支单元等。

FermiKepler-gk10xKepler-gk110Maxwell白皮书包含有关SM中执行单元类型和数量的其他信息。

算术指令的指令吞吐量可以在Table of Throughput of Arithmetic Instructions的CUDA编程指南中找到。

作为开发人员,您希望了解SM可以发布吞吐量表中记录的指令的速率。速率取决于warp调度程序的吞吐量以及执行单元的吞吐量(同样,不仅仅是CUDA核心)。

CC1.x特斯拉

  • 每个SM 1个warp调度程序
  • 每个warp调度程序选择1个符合条件的warp并每4个周期发出1个指令。

CC2.x Fermi

  • 每个SM 2个warp调度程序
  • CC2.0每个warp调度程序为每个不温不火的时钟选择1个符合条件的warp并发出1条指令。
  • CC2.x每个warp调度程序为每个不温不火的时钟选择1个符合条件的warp并发出最多2个独立指令。
  • 数学管道以热时钟(2x温度时钟)运行。这通常会导致人们说明指令是在2个时钟周期内发出的。用温热的时钟来思考更容易。

CC3。*开普勒 CC5.0 Maxwell

  • 每个SM 4个warp调度程序
  • 每个warp调度程序选择1个符合条件的warp并发出最多2个独立指令。