1

根据GK110 白皮书,每个 SMX 最多有 64 个 warp,最大线程容量为 2048 个线程。

我的问题是:每个 SMX 是否始终以 64 的最大驻留扭曲数运行(假设没有线程分歧并且块大小是 64 的倍数)?

我有理由相信,如果 SMX 上的线程数 < 1024,则每个多处理器最多只能获得 32 个扭曲。

(我相信这是因为当运行相同代码时,1 个块上的线程数为 1024 时,我的时钟频率相似的 Fermi 卡显示出与我的 Kepler 卡相似的速度)

4

1 回答 1

3

我的问题是:每个 SMX 是否总是以 64 的最大扭曲率运行(假设没有线程发散并且块大小是 64 的倍数)?

每个 SMX 64 经线是可用并准备好安排的最大经线数。这并不意味着所有 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 上的任何打开的线程块。

于 2014-07-18T04:21:29.663 回答