共享内存带宽:Fermi与Kepler GPU的比较

9

Kepler在访问共享内存时,带宽是Fermi的两倍还是四倍?

编程指南中提到:

每个bank每两个时钟周期有32位的带宽

对于2.X版本,以及

每个bank每一个时钟周期有64位的带宽

对于3.X版本,因此暗示了带宽高达四倍?


@Tom:我在引用5.0 PG的内容。(实际上,关于3.X带宽的那句话是在4.2 PG中添加的。)在这两种情况下都有32个银行。我的问题部分原因是来自于此演示文稿的第81页,他们说带宽是x2。我没有看到任何关于2.X和3.X时钟不同的参考资料,并且我相信当使用“时钟周期”时,它在所有计算能力上都是相同的(例如,指令吞吐量也是如此)。这些时钟周期的赫兹值与本问题无关。 - P Marecki
时钟频率是基础,因为你正在谈论通常以字节/秒为单位测量的带宽,从每个周期的字节到每秒的字节需要时钟频率。我同意文档不清楚,并希望CUDA 5.0最终版本会得到改进(您拥有的版本可能来自发布候选版)。 - Tom
2个回答

9
在Fermi架构中,每个SM有32个bank,在每两个时钟周期内传输32位数据。
在Kepler架构中,每个SMX有32个bank,在每个时钟周期内传输64位数据。然而,由于Kepler的SMX被基本重新设计为节能型,而快速时钟会消耗大量功率,因此Kepler从更慢的核心时钟运行。请参阅GTC中的Inside Kepler演讲,了解更多信息(大约8分钟)。
所以问题的答案是Kepler具有大约2倍而不是4倍的性能。
下一个版本的文档(CUDA 5.0)应该会更好地解释这一点。

我开始理解你的观点了。在3.X上,存储过程运行在主GPU时钟上,而在2.X上,它们运行在着色器时钟上,该时钟是主GPU时钟的两倍。因此,在Kepler架构中,“每个主时钟周期”一次,而在Fermi架构中,“每两个着色器时钟周期”一次(等于每个主时钟周期)。从主GPU时钟的角度来看,访问频率是相同的,而2倍带宽来自更广泛的64位字。这也反映在Kepler白皮书的“SMX处理核心架构”中。很高兴学到有关SPs时钟速率的知识!谢谢! - P Marecki

1

根据编程指南4.2:

共享内存有16个银行,这些银行被组织成每32位相继的字映射到连续的银行。每个银行在两个时钟周期内具有32位的带宽。

Kepler白皮书:

与Fermi SM相比,64b及更大负载操作的共享内存带宽也翻倍,每个核心时钟为256B。

对于小负载操作,其带宽高4倍。


2
这个问题要求比较Fermi(2.x)和Kepler(3.x)。关于16个bank的编程指南引用实际上在1.x部分。Kepler与Fermi相比是2倍。 - Tom
@Tom:在编程指南4.2,F.5中,并没有提到带宽的任何内容。请指明你所提供的引用的章节号。 - Fr34K
在下面的白皮书中提到,时钟速度已经比Fermi增加了。http://www.geforce.com/Active/en_US/en_US/pdf/GeForce-GTX-680-Whitepaper-FINAL.pdf - Fr34K
1
你的困惑源于你所引用的GeForce论文中“每两个时钟周期”是指“着色器时钟”。Kepler没有2倍时钟。对于计算(而非图形),文档使用1.x和2.x设备的2倍时钟,但Kepler已经消除了2倍时钟(如视频中所述,大约在8分钟处)。 - Tom
我已经看了演示PDF。有两个时钟并行,延长了时钟周期。我的理解是对的吗? - Fr34K
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接