CUDA执行模型

GPU架构

GPU的架构是围绕一个流式多处理器(SM)的可扩展阵列搭建的。可以通过复制这种架构的构建块来实现GPU的硬件并行。

SM是GPU中的一个重要组件,负责执行CUDA核函数中的线程块(Thread Block)。每个SM包含多个CUDA核心,可以同时执行多个线程块中的线程,以实现并行计算。

每个CUDA核心有自己的缓存器,也可以访问同一个SM中的共享内存。每个CUDA核心可以并行多个线程。简单来说,一个GPU可以并行的最大线程数=CUDA核心数*一个CUDA核心可以并行的线程数。

CUDA采用单指令多线程(SIMT)架构来管理和执行线程,每32个线程为一组,被称为线程束。线程束中所有线程同时执行相同的指令。每个SM都将分配给它的线程块划分到包含32个线程的线程束中,然后在可用的硬件资源上调度执行。

SIMT架构与SIMD(单指令多数据)架构相似。两者都是将相同的指令广播给多个执行单元来实现并行。一个关键的区别是SIMD要求同一个向量中的所有元素要在一个统一的同步组中一起执行,而SIMT允许属于一个线程束的多个线程独立执行。

一个线程束中的所有线程在相同的程序地址上同时开始执行,但是单独的线程仍有可能有不同的行为。

SIMT架构有三个SIMD所不具备的关键特征

  • 每个线程都有自己的指令地址计数器
  • 每个线程都有自己的寄存器状态
  • 每个线程可以有一个独立的执行路径

一个线程块只能在一个SM上被调度,一旦开始调度,就会保存在该SM上直到执行完成。在同一时间,一个SM可以容纳多个线程块。

SM中的共享内存和寄存器

  1. 共享内存

    • 共享内存是SM中的一种存储器,用于在线程块中的线程之间共享数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值