问题:
使用16个寄存器而不是32个寄存器有什么好处吗?如果是的话,在任何地方都是一个合适的例子吗?
背景
众所周知,寄存器在占用方面起着重要作用,因为占用可能会影响效率,也可能不会影响效率(根据算法)。
另一方面,6.1计算能力的设备受到每个SM的2048个活动线程的限制,每个SM具有65536个寄存器,每个线程具有255个寄存器的上限。因此,每个线程超过32个寄存器必须减少占用率。
在warp shuffle之后,很多具有低延迟性的新可能性变得可用,因此更容易将整个warp(或其中一部分用于7.0 CC)用作最小计算单元以避免分歧和序列化以便制作更好地利用ALU。使用少于32个寄存器开发内核变得更容易。
答案 0 :(得分:0)
正如评论中所讨论的,NVIDIA声称可以在单个SMX上同时执行来自不同内核的块(参见this演示文稿的幻灯片19)。可能是具有少量寄存器的内核可能允许同时执行具有更多寄存器的另一个内核。