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)

相关推荐
学嵌入式的小杨同学5 小时前
STM32 进阶封神之路(三十三):W25Q64 任意长度写入深度实战 —— 从页限制到工业级通用读写(附完整代码 + 避坑指南)
stm32·单片机·嵌入式硬件·架构·硬件架构·嵌入式·flash
搜佛说5 小时前
17-第17章-性能测试与基准测试
物联网·微服务·边缘计算·iot·嵌入式实时数据库
Hello_Embed6 小时前
嵌入式上位机开发入门(三):TCP 编程 —— Server 端实现
笔记·单片机·网络协议·tcp/ip·嵌入式
talen_hx2967 小时前
《零基础入门Spark》学习笔记 Day 11
笔记·学习·spark
wefly20177 小时前
纯前端架构深度解析:jsontop.cn,JSON 格式化与全栈开发效率平台
java·前端·python·架构·正则表达式·json·php
史蒂芬_丁7 小时前
Qt, C++数据类型扩展问题
数据库·c++·qt
6Hzlia7 小时前
【Hot 100 刷题计划】 LeetCode 118. 杨辉三角 | C++ 动态规划题解
c++·leetcode·动态规划
ZhiqianXia8 小时前
gem5 模拟器学习笔记(1):核心术语整理
笔记·学习
三道渊8 小时前
C语言:文件I/O
c语言·开发语言·数据结构·c++
odoo中国8 小时前
Claude Code 架构总览
架构·claude·自动编程·claude cdoe