我问以下问题,因为我很困惑......
在各种网站和论文中,我发现声明说Kepler架构增加了每个线程的寄存器数量,但是在我的GTX680上这似乎不正确,因为RegsPerBlock是65536所以对于1024个线程它将是64暂存器。我缺少什么?将来每个线程会有更多的寄存器吗?
此致 丹尼尔
答案 0 :(得分:9)
开普勒架构有两种变体,sm_30和sm_35。 GTX 680卡基于GK104 GPU,实现了sm_30架构。该架构每个线程有64个寄存器,其中63个可用于用户代码,一个是专用零寄存器。未来基于GK110的部件如K20实现了sm_35架构,每个线程提供256个寄存器,其中255个可供用户代码使用(一个也是专用的零寄存器)
答案 1 :(得分:1)
虽然what @njuffa wrote为真,但同样重要的是要注意每个线程的最大寄存器数量不一定相等(寄存器文件大小/每个块的最大线程数)。可能的情况是,您只能使用较小线程块的每个线程最大可能的reg。
......事实上,这是exactly how it actually is的CC 3.5开普勒卡,以及Maxwell 5.x和Pascal 6.0卡:寄存器文件有64个Ki寄存器;每个块的最大线程数为1024;但每个线程的最大寄存器数为255(+零寄存器)。只有每个块最多256个线程的网格才能获得每个线程255个注册表。