cuda程序以及硬件的映射

本文详细介绍了CUDA编程中线程块和流式多处理器(SM)的概念。每个线程块由多个尺寸相同的线程组成,它们在SM上执行。SM可以调度多个线程块,并拥有自己的共享内存、寄存器和缓存资源。线程束(warp)是CUDA中的基本调度单元,每个线程有自己的执行路径和状态。线程束的分化可能导致性能下降,因此需要注意线程块的大小和资源使用,通常设置为32的倍数以优化效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一个网格中,多个块,每个块的大小和维度是一样的,每个线程--->cuda core或者 sp(stream processor)

 block-->SM。

SM 可以调度多个线程块,一个kernel 的各个线程块被分配多个SM, grid 是逻辑层 ,SM 是执行的物理层。每个SM 有自己的共享内存、寄存器 ,L1 cache 以及其他功能的硬件。一个程序的块不能被映射到不同的SM上,一个block 只能被一个SM调度。

 

SM 采用 SIMT采用单指令多线程的架构(将多维thread 排成一维),是以wrap为最小的调度单位,每个线程有独立地址计数器,也有寄存器状态,以及独立的执行路径。线程束中的线程从同一程序地址开始执行,但是可能会遇到不同的分支路径,另外一些线程可能不执行,只能进入等待状态。线程束的分化会造成程序性能的下降。

每个wrap中使用的内存、寄存器资源不能太多,否则,每个Sm上处于活跃状态的wrap会比较少。block 的大小一般设为32的倍数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xieshangxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值