首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(GK20a GPU) tegra k1中每SM的驻留翘曲量

(GK20a GPU) tegra k1中每SM的驻留翘曲量
EN

Stack Overflow用户
提问于 2014-07-22 12:01:09
回答 2查看 1.4K关注 0票数 2

在(GK20a GPU) tegra k1中,每SM存在多少驻留翘曲?

根据文档,我在tegra k1中获得了以下信息,其中有1个SMX和192个核心/多处理器

每个多处理器的最大线程数: 2048每个块的最大线程数: 1024可以指定每个SMX的最大块的值吗?

32 *4=128个(经纱中没有线程)(如开普勒,允许同时发出和执行四个翘曲)线程是否同时运行?如果没有,那么并发运行的线程有多少?

请帮助我解决和理解它。

EN

回答 2

Stack Overflow用户

发布于 2014-07-22 14:45:48

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

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

32 *4= 128 (经纱中的线程否)(如开普勒允许同时发出和执行四个翘曲)线程是否同时运行?如果没有,那么并发运行的线程有多少?

在给定的时钟周期中可以发出的和可以“并发”执行的是不同的。

  1. 由于指令执行是流水线的,来自多个不同翘曲的多个指令可以在流水线中的任意点执行。
  2. 开普勒有4个翘曲调度器,每个可以从给定的翘曲中发出两个指令(4个经纱调度器的4个翘曲总数,每个发行时隙最多2个指令,每个时钟周期最多可发出8个指令)。
  3. 最多64个翘曲(每翘曲32个线程x64个翘曲= 2048个多处理器最大线程)可以驻留在每个多处理器(即打开和可调度)。这也是当前在任何给定时刻执行的最大数量(在管道的各个阶段)。

因此,在任何给定的时刻,来自64 (最大)可用翘曲中任意一个的指令可以处于不同的执行阶段,在开普勒多处理器中的不同功能单元的不同管道中。

然而,开普勒的每个多处理器每时钟周期的最大线程指令问题是4曲调度器x (max)2指令=8* 32 = 256。在实践中,优化的代码通常不会达到这个最大值,但是在实践中,每个发行时隙(即每个时钟周期)平均4到6个指令是可以实现的。

票数 4
EN

Stack Overflow用户

发布于 2014-07-22 12:30:53

部署到SM执行的每个块都需要某些资源,要么注册,要么共享内存。让我们想象一下以下情况:

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

我不知道tegra,但如果我现在使用的卡(GK110芯片),每个SM有65536的32位寄存器(~256 be )可用,因此在下面的情况下,所有的寄存器将得到使用的单个块部署到这个SM,所以每SM块的限制将是1在这种情况下.

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

目前我不确定是否存在寄存器或共享内存之外的其他阻塞因子,但显然,如果寄存器的阻塞因子为1,而共享内存的阻塞因子为2,则较低的数目是每个SM的块数的限制。

至于你的第二个问题,有多少线程可以同时运行,答案是--一个SM中有多少个内核,所以对于SMX和开普勒体系结构,它是192。同时翘曲次数明显为192 / 32。

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

编辑: Reading的答案我意识到每个SM的块和每个SM的线程确实有这些限制,但是我始终无法达到它们,因为内核通常使用太多的寄存器或共享内存。同样,这些值可以使用Nsight进行调查,Nsight可以显示所有有关现有CUDA设备的有用信息,但这些信息可以在GK110芯片上找到,甚至在相关文件中的NVIDIA页面上也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24886862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档