63 个寄存器是最大值。在大多数最近的硬件(例如 GTX 480 到 GTX 770)上的数量。只有使用 GTX 780 或 Tesla K20,您才能获得每个线程 255 个寄存器。
因此,当您的内核使用 63 个寄存器时,很可能会使用 63 个以上的寄存器,但它们将溢出到片外专用内存(也称为 CUDA 本地内存)。例如,如果您的 nvidia 分析器报告 128 字节的本地内存,则意味着您需要摆脱 32 个(溢出)寄存器,然后才能获得低于 63 个硬件寄存器。
顺便说一句:“每个多处理器 8,192 个 32 位寄存器”意味着驻留在多处理器上的所有工作组有 8,192 个寄存器。但通常工作组的数量受工作组的大小和内核所需的寄存器数量的限制。例如,如果您的内核使用 63 个寄存器并且您的工作组大小为 16^2,您将得到:63*16^2 = 每个工作组 16128 个寄存器。假设每个多处理器有 64K 个寄存器,那么每个多处理器上可以有 4 个工作组,这将产生 25% 的占用率。
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |