【发布时间】:2014-07-18 02:08:51
【问题描述】:
根据GK110 whitepaper,每个SMX最多有64个warp,最大线程容量为2048个线程。
我的问题是:每个 SMX 是否始终以 64 的最大驻留扭曲数运行(假设没有线程分歧且块大小是 64 的倍数)?
我有理由相信,如果 SMX 上的线程数
(我相信这是因为当运行相同代码时,1 个块上的线程数为 1024 时,我的时钟频率相似的 Fermi 卡显示出与我的 Kepler 卡相似的速度)
【问题讨论】:
根据GK110 whitepaper,每个SMX最多有64个warp,最大线程容量为2048个线程。
我的问题是:每个 SMX 是否始终以 64 的最大驻留扭曲数运行(假设没有线程分歧且块大小是 64 的倍数)?
我有理由相信,如果 SMX 上的线程数
(我相信这是因为当运行相同代码时,1 个块上的线程数为 1024 时,我的时钟频率相似的 Fermi 卡显示出与我的 Kepler 卡相似的速度)
【问题讨论】:
我的问题是:每个 SMX 是否总是以 64 的最大扭曲率运行(假设没有线程分歧并且块大小是 64 的倍数)?
每个 SMX 64 个 warp 是可用并准备好安排的最大 warp 数。这并不意味着所有 64 个 warp 都同时执行。 GK110 SMX 有 4 个 warp 调度器,每个调度器可以从一个 warp 调度 1 或 2 条指令。因此,在任何指令周期/发出槽中,最多将“调度” 4 个扭曲以使其指令在该槽中开始。
由于线程被安排在 32 个称为 warp 的块中,因此如果您的运行线程少于 1024 个,那么您的运行线程也可能少于 32 个。
fermi 和 kepler 都限制为每个块 1024 个线程。因此,通过在给定的 SM/SMX 上同时打开多个线程块来实现每个 SM 1536 个线程的费米限制和每个 SMX 2048 个线程的开普勒限制。可调度的 warp 可以来自 SM/SMX 上的任何打开的线程块。
【讨论】: