为什么CUDA占用是根据支持的最大扭曲的活动扭曲数定义的

时间:2013-03-06 20:00:19

标签: cuda

占用率定义为一个Stream Multiprocessor上支持的最大warp数量的活动warp数。假设我在一个SM上运行了4个块,每个块有320个线程,即10个warp,因此在一个SM上有40个warp。占用率为40/48,假设一个SM上的最大扭曲为48(CC 2.x)。

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

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

1 个答案:

答案 0 :(得分:10)

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