2

How many resident warps are present per SM in (GK20a GPU) tegra k1?

As per documents I got following information In tegra k1 there is 1 SMX and 192 cores/multiprocessor

Maximum number of threads per multiprocessor: 2048 Maximum number of threads per block: 1024 Can any one specify value of maximun blocks per SMX?

Is 32 * 4 = 128 (no of threads in warp * no of warp ) (AS kepler allowing four warps to be issued and executed concurrently) threads running concurrently ? if NO, How many number of threads run concurrently?

Kindly help me to solve and understand it.

4

2 回答 2

4

任何人都可以指定每个 SMX 的最大块值吗?

对于开普勒 (cc 3.x) 设备,每个多处理器的最大驻留块数为 16。

32 * 4 = 128(warp 中的线程数 * warp 的数量)(AS 开普勒允许同时发出和执行四个 warp)线程并发运行吗?如果否,有多少线程同时运行?

在给定时钟周期内可以发布的内容与可能“同时”执行的内容之间存在差异。

  1. 由于指令执行是流水线的,因此来自多个不同扭曲的多条指令可以在流水线中的任何点执行。

  2. Kepler 有 4 个 warp 调度器,每个调度器可以从给定的 warp发出两条指令(4 个 warp 调度器总共有 4 个 warp,每个发出槽最多 2 条指令,每个时钟周期最多可以发出 8 条指令)。

  3. 每个多处理器最多可以驻留 64 个线程(每个线程 32 个线程 x 64 个线程 = 每个多处理器最大 2048 个线程)。这也是在任何给定时刻当前(在管道的各个阶段)可能正在执行的最大数量。

因此,在任何给定时刻,来自 64 个(最大)可用 warp 中的任何一个的指令都可以处于不同的执行阶段,位于 Kepler 多处理器中各种功能单元的各种管道中。

然而,Kepler 的每个多处理器每个时钟周期的最大线程指令问题是 4 个 warp 调度程序 x (max)2 指令 = 8 * 32 = 256。在实践中,经过良好优化的代码通常不会达到这个最大值,而是平均每个 4-6 条指令问题槽(即每个时钟周期)在实践中可能是可以实现的。

于 2014-07-22T14:45:48.290 回答
0

部署用于执行到 SM 的每个块都需要某些资源,寄存器或共享内存。让我们想象以下情况:

  • 来自某个内核的每个线程都使用 64 个 32b 寄存器(256B 寄存器内存),
  • 内核使用大小为 1024 个线程的块启动,
  • 显然这样的块会消耗特定 SM 上 256*1024B 的寄存器

我不了解 tegra,但如果是我现在使用的卡(GK110 芯片),每个 SM 都有 65536 个 32 位寄存器(~256kB)可用,因此在以下情况下,所有寄存器都会被使用单个块部署到此 SM,因此在这种情况下,每个 SM 的块限制为 1...

共享内存的示例以相同的方式工作,在内核启动参数中,您可以定义每个启动的块使用的共享内存量,因此如果您将其设置为 32kB,则在 64kB 共享内存大小的情况下,可以将两个块部署到 SM。值得一提的是,到目前为止,我相信只有来自同一内核的块可以同时部署到一个 SM。

我目前不确定除了寄存器或共享内存是否还有其他阻塞因子,但显然,如果寄存器的阻塞因子为 1,共享内存的阻塞因子为 2,那么较低的数字是每个 SM 的块数限制.

至于您的第二个问题,可以同时运行多少线程,答案是 - 与一个 SM 中的内核一样多,因此在 SMX 和 Kepler 架构的情况下,它是 192。并发扭曲的数量显然是 192 / 32。

如果您对这些东西感兴趣,我建议您使用 nsight 分析工具,您可以在其中检查所有内核启动及其阻塞因素以及更多有用的信息。

编辑: 阅读 Robert Crovella 的回答,我意识到每个 SM 的块和每个 SM 的线程确实存在这些限制,但我永远无法达到它们,因为我的内核通常使用过多的寄存器或共享内存。同样,这些值可以使用 Nsight 进行调查,它显示有关可用 CUDA 设备的所有有用信息,但例如在 GK110 芯片的情况下,即使在相关文档的 NVIDIA 页面上也可以找到此类信息。

于 2014-07-22T12:30:53.730 回答