CUDA 内核执行与流式多处理器详解
1. 线程 ID 与线程束映射
在 14Wx8H 块的情况下,每个线程束仅容纳 28 个线程,在整个内核执行过程中,有 12.5% 的可能线程通道处于空闲状态。为避免这种浪费,开发者应确保块包含 32 的倍数个线程。以下是部分线程 ID 示例:
Grid (0, 0, 0) - slice 0:
0 1 2 3 4 5 6 7 8 9 a b c d
10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d
...
Grid (1, 0, 0) - slice 0:
0 1 2 3 4 5 6 7 8 9 a b c d
10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d
...
2. 占用率
占用率是衡量在给定内核启动时,每个流式多处理器(SM)上运行的线程数与该 SM 上可能运行的最大线程数之比。计算公式为:
[
占用率 = \frac{每个 SM 的线程束数}{每个 SM 的最大线程束数}
]
分母(每个 SM 的最大线程束数)是一个仅取决于设备计算能力的常数。分子则取决于以下因素:
- 计算能力(1.0, 1.1, 1.2, 1.3, 2.0, 2.1, 3.0, 3.5)
- 每个块的线程数
- 每个线程的寄存器数 <
超级会员免费看
订阅专栏 解锁全文
705

被折叠的 条评论
为什么被折叠?



