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)

相关推荐
jimmyleeee7 分钟前
人工智能基础知识笔记三十四:提升RAG效果的几种技术
人工智能·笔记
Solar20259 分钟前
工程材料企业数据采集系统十大解决方案深度解析:从技术挑战到架构实践
java·大数据·运维·服务器·架构
_OP_CHEN10 分钟前
【算法基础篇】(四十八)突破 IO 与数值极限:快速读写 +__int128 实战指南
c++·算法·蓝桥杯·算法竞赛·快速读写·高精度算法·acm/icpc
玖釉-15 分钟前
[Vulkan 实战] 深入解析 Vulkan Compute Shader:实现高效 N-Body 粒子模拟
c++·windows·图形渲染
云泽80817 分钟前
深入浅出 C++ 继承:从基础概念到模板、转换与作用域的实战指南
开发语言·c++
a***592617 分钟前
C++跨平台开发:挑战与实战指南
c++·c#
国科安芯17 分钟前
微小卫星红外相机双MCU冗余架构的抗辐照可靠性评估
人工智能·单片机·嵌入式硬件·数码相机·架构·自动化·安全性测试
十五年专注C++开发19 分钟前
CMake进阶:模块模式示例FindOpenCL.cmake详解
开发语言·c++·cmake·跨平台编译
Lonely 净土32 分钟前
渗透学习笔记-前四天
笔记·学习
TensorFlowGAN34 分钟前
渗测随堂总结笔记 1(未完,一二章+三章 01)
笔记