You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CUDA疑问:设置1024个Block为何GPU未同时处理所有线程?

CUDA线程分批执行的原因分析
  • GPU硬件资源限制:你的GTX 1660 SUPER属于Turing架构,配备22个流式多处理器(SM)。每个SM能同时驻留的线程块数量受寄存器、共享内存等硬件资源限制。你的每个线程块仅含1个线程,但如果延时逻辑占用了较多寄存器,每个SM可容纳的线程块数会大幅降低。比如若每个SM最多能驻留16个线程块,22×16=352,刚好和你观察到的约350个一批的现象吻合。GPU无法一次性将所有1024个线程块塞进所有SM,只能分批调度。

  • CUDA调度机制特性:CUDA的线程块调度是以SM为单位的。当一批线程块被分配到各个SM并开始执行后,这些SM会被持续占用直到线程块执行完毕(你的延时逻辑会让线程块长时间占用SM资源)。只有当前一批线程块执行完成、释放SM资源后,剩余的线程块才能被调度到空闲SM上运行,因此你会看到明显的分批处理现象。

  • 无关数据传输的影响:代码中未被设备使用的主机到设备数组传输操作,不会直接导致线程分批执行。这类操作只是浪费了PCIe带宽和设备内存空间,但不会干扰GPU的线程调度逻辑。

内容的提问来源于stack exchange,提问作者user20995197

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:55:34