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

单SM中Block最大线程数与CUDA核心的区别及认知求证

CUDA核心、SM与线程调度认知判断与解释

我的基础理解

硬件层面

一个SM(流式多处理器)包含多个warp,每个warp对应32个CUDA核心,这些核心属于简单计算单元,每时钟周期可执行一次计算(参考相关技术视频内容)。

软件层面

单个grid由多个block组成,每个block包含多个线程,且存在“max threads per block”(单block最大线程数)的限制。

6点认知的正误判断与解释

  • 认知1:每个block仅在一个SM上执行,不会跨SM迁移。以RTX 3090为例,据TechPowerUp数据,其拥有10496个CUDA核心、82个SM,即每个SM含128个CUDA核心,对应4个warp。

    结论:正确。CUDA的调度机制决定了单个block只能被分配到一个SM上执行,且执行全程不会跨SM迁移。RTX 3090的硬件参数计算符合逻辑:10496 ÷ 82 = 128,每个SM的128个CUDA核心刚好对应4个32线程的warp。

  • 认知2:每个CUDA核心一次执行一个线程,一个warp的32个CUDA核心会同步为32个线程执行一条指令。

    结论:正确。CUDA采用SIMT(单指令多线程)架构,同一个warp内的32个线程同步执行同一条指令,每个CUDA核心在单个时钟周期内负责执行其中一个线程的指令。

  • 认知3:常看到“max threads per block”(通常为2048)超过SM的CUDA核心数,我认为这是64个warp被调度到一个SM,而非同时执行。

    结论:正确。SM支持同时驻留多个block和warp,2048线程对应64个warp,这些warp会由SM根据硬件资源状态分时调度执行,同一时刻只有部分warp能获得CUDA核心资源运行。

  • 认知4:“max threads per block”=2048是内存限制,指可同时记录和调度的最大线程数,而非SM单时钟周期可同时执行的线程数。

    结论:不完全准确。该限制是由SM的多项硬件资源共同决定的,包括寄存器容量、共享内存大小、线程槽数量等,并非仅由内存限制。它代表单个block能被SM容纳的最大线程数,确实和单时钟周期执行的线程数无关。

  • 认知5:部分资料称“每个核心执行32个线程”,我认为该表述错误。

    结论:正确。这种表述混淆了warp和CUDA核心的关系。正确逻辑是:一个warp包含32个线程,由32个CUDA核心同步执行;单个CUDA核心每次仅执行一个线程的指令,不存在“一个核心执行32个线程”的情况。

  • 认知6:某文章中RTX 3090示例称用8个SM、每个SM8个warp完成矩阵乘,我认为错误,因RTX3090每个SM仅4个warp,需16个SM。

    结论:你的判断正确。RTX 3090每个SM只有128个CUDA核心,对应4个warp。若每个SM要运行8个warp,所需SM数量应为16个,文章中的计算存在错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:52:38