Cuda 与费米相比,开普勒的限制因素是什么?

Cuda 与费米相比,开普勒的限制因素是什么?,cuda,gpu,nvidia,Cuda,Gpu,Nvidia,这不是一个严格的编程问题,但了解硬件是编程的关键部分 所以我开始这个帖子,希望这里的人们能分享他们在开普勒(GK10X或GK110)上编程的经验 首先,我开始我的: 我现在正在GK110上做一些编程,对于一些应用,GK110比费米快得多,接近其理论峰值(例如,快2.5-3倍)。但对其他人来说,情况并非如此(例如,速度仅提高约50%-60%) 如果我错了,请纠正我,但在我看来,开普勒的主要性能瓶颈是资源压力非常高: 在每平方米的水平上,费米实际上拥有比GK110多得多的资源,在每平方米上,费米只有

这不是一个严格的编程问题,但了解硬件是编程的关键部分

所以我开始这个帖子,希望这里的人们能分享他们在开普勒(GK10X或GK110)上编程的经验

首先,我开始我的:

我现在正在GK110上做一些编程,对于一些应用,GK110比费米快得多,接近其理论峰值(例如,快2.5-3倍)。但对其他人来说,情况并非如此(例如,速度仅提高约50%-60%)

如果我错了,请纠正我,但在我看来,开普勒的主要性能瓶颈是资源压力非常高:

在每平方米的水平上,费米实际上拥有比GK110多得多的资源,在每平方米上,费米只有一个SIMT单元,而开普勒有6个

然而,在每个SM上,Fermi有32K寄存器文件,最多1536个活动线程,而在开普勒的每个SM上,只有33%的活动线程、100%的寄存器、800%的指令发布单元和相同数量的一级缓存

关于内存和计算的延迟在绝对值上大致相同(GPU周期的一半)

因此,与GF110相比,GK110的资源压力要高得多

对于800%的指令发出单元,Nvidia似乎希望使用更积极的TLP和ILP来隐藏开普勒上的延迟,但它肯定没有那么灵活,因为一级缓存是相同的,活动线程只增加了33%,而不是像其SIMT单元那样增加了500%


因此,要最大限度地利用开普勒的效率就要困难得多,首先,代码必须包含更多的ILP,但要利用开普勒庞大的指令发布单元,需要占用更少的共享内存,其次,在每扭曲级别上,工作流必须是计算密集型的,这样开普勒计划就不需要切换很多扭曲来隐藏延迟(而且它肯定没有很多可用扭曲可供选择)。

您可能需要阅读开普勒(GK110),或者与费米比较,然后研究开普勒。《调优指南》将回答您关于开普勒的差异以及如何充分利用开普勒的许多问题。

这里有实际问题吗?当然,因为我想了解更多关于开普勒编程的实际问题。因此,它并不是真正用来作为开放式讨论线程的工具。这里最好回答的问题类型是与特定编程问题相关的特定问题。很难用一个简单的问题/答案来回答像你这样广泛的话题。因此,这些问题并不是一般性的讨论主题。