在(GK20a GPU) tegra k1中,每SM存在多少驻留翘曲?
根据文档,我在tegra k1中获得了以下信息,其中有1个SMX和192个核心/多处理器
每个多处理器的最大线程数: 2048每个块的最大线程数: 1024可以指定每个SMX的最大块的值吗?
32 *4=128个(经纱中没有线程)(如开普勒,允许同时发出和执行四个翘曲)线程是否同时运行?如果没有,那么并发运行的线程有多少?
请帮助我解决和理解它。
发布于 2014-07-22 14:45:48
任何人都可以指定每个SMX最大块的值吗?
对于开普勒(cc 3.x)设备,每个多处理器的驻留块数最大为16块。
32 *4= 128 (经纱中的线程否)(如开普勒允许同时发出和执行四个翘曲)线程是否同时运行?如果没有,那么并发运行的线程有多少?
在给定的时钟周期中可以发出的和可以“并发”执行的是不同的。
因此,在任何给定的时刻,来自64 (最大)可用翘曲中任意一个的指令可以处于不同的执行阶段,在开普勒多处理器中的不同功能单元的不同管道中。
然而,开普勒的每个多处理器每时钟周期的最大线程指令问题是4曲调度器x (max)2指令=8* 32 = 256。在实践中,优化的代码通常不会达到这个最大值,但是在实践中,每个发行时隙(即每个时钟周期)平均4到6个指令是可以实现的。
发布于 2014-07-22 12:30:53
部署到SM执行的每个块都需要某些资源,要么注册,要么共享内存。让我们想象一下以下情况:
我不知道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页面上也是如此。
https://stackoverflow.com/questions/24886862
复制相似问题