6. cuda warp

8 篇文章 1 订阅 ¥79.90 ¥99.00
CUDA中的Warp是线程块在单流多处理器上的基本执行单位,确保了理论并行与实际并行的一致性。每个线程块由多个Warp组成,每个SM能并行执行一定数量的Warp。当线程数量不是Warp大小(通常是32)的整数倍时,会导致共享内存浪费和性能下降。编程实践中,建议线程块大小为Warp大小的整数倍,以优化性能。
摘要由CSDN通过智能技术生成

6. cuda warp

  • 在cuda中,线程块在单流多处理器上运行。

  • 当设备内存足够时,多个block可以在同一个sm上运行。

  • SIMT(Single instruction multiple threads):
    一个指令多个线程执行(cuda的本质)

  • 一个线程块不能再多个SM中执行。当一个SM中不能跑一个block的时候,(共享内存溢出时), 内核发射失败,函数将返回 cudaSucess以外的值。

  • 程序结构对应的硬件结构:
    在这里插入图片描述

  • 为什么要有warp?

    • 理论上线程并行和实际上的并行是有稍微差异的

    • 例如: 当 SM的数量为13,每个SM的核心数为128,那么总共可以并行的实际核心数量为 13 * 128 = 1664;

    • 如我们给每个线程块分配512个线程,显然一个SM上是无法完全并行一个block的。

    • 所以block被划分为更小的单元: warp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值