6

占用率定义为活动扭曲的数量超过一个流多处理器上支持的最大扭曲的数量。假设我在一个 SM 上运行了 4 个块,每个块有 320 个线程,即 10 个 warp,所以一个 SM 上有 40 个 warp。占用率为 40/48,假设一个 SM 上的最大扭曲为 48 (CC 2.x)。

但总的来说,我在一个 SM 上运行了 320 * 4 个线程,而一个 SM 上只有 48 个 CUDA 内核。为什么入住率不是100%?我正在使用所有 CUDA 内核...

我很确定我错过了什么......

4

1 回答 1

10

因为占用与核心无关。CUDA 是一种流水线 SIMD 风格的架构。您的 48 个内核是从管道(实际上是双发)中的每个 warp指令馈送的。您需要大量的扭曲来保持指令流水线充满,否则所有内核都会停止。这就是为什么占用率是量化给定内核提供足够并行工作以实现合理性能的能力的一个有用的指标。

于 2013-03-06T20:10:16.613 回答