【问题标题】:What are the limiting factors of Kepler, comparing to Fermi?与费米相比,开普勒的限制因素是什么?
【发布时间】:2013-03-06 04:31:22
【问题描述】:

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

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

首先我要开始我的:

我目前正在 GK110 上进行一些编程,对于某些应用,GK110 比 Fermi 快得多,接近其理论峰值(例如快 2.5-3 倍)。但对于其他人来说,它不是,(例如,只有 ~ 50%-60% 快)。

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

在每个 SM 级别上,Fermi 实际上比 GK110 拥有更多的资源,在每个 SM 上,Fermi 只有一个 SIMT 单元,而 Kepler 有 6 个。

然而在每个 SM 上,Fermi 有 32K 个寄存器文件,最多有 1536 个活动线程,而在 Kepler 的每个 SM 上,只有 33% 的活动线程,100% 的寄存器,800% 的指令发出单元,和相同数量的 L1 缓存。

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

所以 GK110 的资源压力比 GF110 高很多。

有了 800% 的指令发出单元,Nvidia 似乎想使用更激进的 TLP 和 ILP 来隐藏 Kepler 上的延迟,但它肯定没有那么灵活,因为 L1 缓存是相同的,而活动线程只是增加了 33%,而不是像 SIMT 单位那样增加了 500%。

因此,要利用 Kepler 的最大效率,要困难得多,首先代码必须包含显着更多的 ILP,但要使用显着更少的共享内存才能利用 Kepler 的大量指令发布单元,其次,在每个经线级别,工作流程必须非常计算密集,这样开普勒计划不需要切换很多经线来隐藏延迟(而且它当然没有很多可用的经线可供选择)。

【问题讨论】:

  • 这里有实际问题吗?
  • 当然,因为我想了解更多关于 Kepler 编程的实际问题。
  • SO 并不是真正打算用作开放式讨论线程的工具。这里最好回答的问题类型是与特定编程问题相关的特定问题。用一个问题/答案 SO 格式来解决像您这样的广泛主题是非常困难的。 SO 问题不是一般性的讨论主题。

标签: cuda gpu nvidia


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-05
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2010-11-25
    相关资源
    最近更新 更多