一个SM里有N个warp scheduler,那么是不是意味着一个SM在一个时钟周期最多能执行N个warp?

  • 2 replies
  • 186 views
一个SM里有N个warp scheduler,那么是不是意味着一个SM在一个时钟周期最多能执行N个warp?
听GPUSLady说工程师要骂我,表示很疑惑,是我问的问题太low了吗?  :'(

一个SM里有N个warp scheduler,那么是不是意味着一个SM在一个时钟周期最多能执行N个warp?
听GPUSLady说工程师要骂我,表示很疑惑,是我问的问题太low了吗?  :'(


每个scheduler最多同时能发射来自1个warp的指令,但有的计算能力可能会双发射。所以你的说法也没错,N个scheduler,最多同一时刻执行来自N个warp的指令,并同时受到可用执行单元之类的因素的限制。

注意指令的数量可能在N~2N之间,例如计算能力6.1的卡,4个schedulers,最多可能执行来自4个warps的6条指令(最大IPC为6,或者说192(分别为warp单位和线程单位)。

每个scheduler最多同时能发射来自1个warp的指令,但有的计算能力可能会双发射。所以你的说法也没错,N个scheduler,最多同一时刻执行来自N个warp的指令,并同时受到可用执行单元之类的因素的限制。

注意指令的数量可能在N~2N之间,例如计算能力6.1的卡,4个schedulers,最多可能执行来自4个warps的6条指令(最大IPC为6,或者说192(分别为warp单位和线程单位)。
问题1:
正如您所说,某些架构的SM具备指令双发射的能力,那么GPU中的SM支持哪些指令并行技术?例如:
(1)指令流水线
(2)乱序执行
(3)指令多发射(就像您所说的,SM支持指令多发射)
(4)分支预测
(5)VLIW

问题2:
随着架构的变化,哪些指令并行技术发生了变化?从哪变到了哪?

问题3:
SM中的SFU、DPU、Tensor core并不是32的倍数(小于32),假如每个线程都要使用这样的计算单元时,SM是如何处理的?举个例子:Tesla-K10中的SM只包含8个DPU,warp中的线程是采用round-robin的方式逐批使用DPU吗?

问题4:
对于SM中的SFU、DPU、Tensor core,在编程的时候使用特殊的API才能使得指令跑在这些特殊的运算单元上吗?还是说CUDA的编译器会自动进行编译优化使得某些指令跑在这些特殊的运算单元上?