TensorRT及CUDA自学笔记005 GPU架构和线程束

TensorRT及CUDA自学笔记005 GPU架构和线程束

GPU架构

流处理器streaming multiprocessor (SM)

每一个SM包含整数个CUDA core、共享内存\L1缓存(shared memory\L1cache)、注册文件(Register File)、加载和存储单元(Load\Store Units)、特殊函数单元SFU(Special Function Unit)、Warps调度(Warps Scheduler)

Fermi架构

  1. Fermi架构中512个CUDA内核构成16个SM,每个core中包含算数逻辑单元(ALU)和浮点计算单元(FPU)
  2. Fermi架构包含6G全局内存
  3. Fermi架构通过PCIE总线和主机连接
  4. Fermi架构中,每个SM包含16个加载和存储单元
  5. Fermi架构包含四个SFU,包含两个Warps Scheduler,两个Dispatch Unit

其中绿色为CUDA core

线程束(Warps)

左边是编程时的软件模型,右边时线程在物理层面的模型

每个GPU可以并行执行大量的thread,GPU中的每一个core执行一个thread,但是在物理上thread并不是真正的完全同步运行的,core,block总共就那么多,是不能支持过多的thread完全同时运行的,所以,就像排队一样,grid中的block被分配到GPU上的SM上执行,每个SM是先执行完一批thread后在执行下一批thread,多批线程块按顺序地在同一批SM中执行。

当block被分配在SM上时,就会以32个thread为一组进行分割,每一组为一个warp

线程束的数量计算

  1. 每个Warp包含32个thread
  2. 每个warp中只能包含同一个block中的thread(每个block中的所有thread的计算是一样的,只有其用于计算的数据是不同的)

所以我们要用block的维度计算出的thread的数量除以32,再向上取整就可以得到共需要多少个warp(注意不是SM)

相关推荐
CodeYp20196 分钟前
第15讲:二叉搜索树
开发语言·c++·二叉搜索树
合尘猫36 分钟前
词元涨价近一倍后,我把 AI 客服的成本拆成了四个可优化的变量
人工智能·后端·架构
pipixia200331 小时前
C++继承面试四连问:内存叠加、私有继承、sizeof、权限重映射
c++·面试·嵌入式·继承·面向对象·对象模型
这个DBA有点耶1 小时前
2026年国产数据库“实际用户增长最快”核验指南:口径优先级、可查数据与选型动作清单
数据库·mysql·架构
JMchen1 小时前
【Jetpack 内核实战 08 】:组件整合——DataStore + Room 构建离线优先架构
架构·kotlin·android jetpack
昭昭日月明1 小时前
AI 时代的《重构》
设计模式·架构
诚心呈意共享外卖配送系统1 小时前
即时零售配送系统怎么选?一份可落地的技术选型评估清单
架构·系统架构·创业创新·零售
瓶瓶持续学习中2 小时前
数字孪生与空间智能技术架构解析:五类厂商路线及选型方法
大数据·网络·架构
JPower_mr.g2 小时前
SmartCall v1.0.9 发布:智能体知识库上线,让 AI 客服先查资料再回答
java·ide·人工智能·macos·架构·开源·xcode
天远数科3 小时前
零信任架构实战:基于天远企业年报信息核验构建自动化供应商准入资质合规审查网关
运维·人工智能·架构·自动化