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

Dan*_*Zhu 5 cuda

正如这个问题的答案所示,当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上?

Gre*_*ith 14

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

费米,开普勒gk10x,开普勒GK110麦克斯韦白皮书包含关于在SMS的类型和执行单元数量的附加信息.

算术指令的指令吞吐量可以在算术指令吞吐量表中的CUDA编程指南中找到.

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

CC1.x特斯拉

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

CC2.x费米

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

CC3.*Kepler CC5.0 Maxwell

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