5

当我感到困惑时,我正在问以下问题......

在各种网站和论文上,我发现声明说 Kepler 架构增加了每个线程的寄存器数量,但在我的 GTX680 上,这似乎不是真的,因为 RegsPerBlock 是 65536,所以对于 1024 个线程,它将是 64 个 regs。我错过了什么?.. 将来每个线程会有更多的寄存器吗?

问候丹尼尔

4

2 回答 2

10

Kepler 架构有两种变体,sm_30 和 sm_35。GTX 680 卡基于实现 sm_30 架构的 GK104 GPU。这种架构每个线程有 64 个寄存器,其中 63 个可用于用户代码,一个是专用的零寄存器。未来基于 GK110 的部件(如 K20)实现 sm_35 架构,该架构为每个线程提供 256 个寄存器,其中 255 个可用于用户代码(又是一个专用的零寄存器)

于 2012-10-25T23:02:44.657 回答
1

虽然@njuffa 写的是真的,但同样重要的是要注意每个线程的最大寄存器数不一定相等(寄存器文件大小/每个块的最大线程数)。可能的情况是,您只能利用每个线程的最大可能 regs 和较小的线程块。

...事实上,这正是CC 3.5 Kepler 卡、Maxwell 5.x 和 Pascal 6.0 卡的实际情况:寄存器文件有 64 个 Ki 寄存器;每个块的最大线程数为 1024;但每个线程的最大寄存器为 255(+ 零寄存器)。只有每个块最多 256 个线程的网格才能获得每个线程 255 个 regs。

于 2016-06-12T09:51:14.803 回答