CUDA 编程(一) CPU 与 GPU 的基本知识

本文最后更新于:2025年1月30日 晚上

重要指标

  • 延迟:一条指令从发出到返回结果所经历的时间间隔
  • 吞吐量:单位时间内执行的指令数

CPU:延迟导向设计

CPU - CPU 设计原则:减少延迟 - CPU 特点: - 内存大:本着空间换时间的原则,拥有多级缓存结构提高访存速度(L1 Cache、L2 Cache...),把经常访问的数据放在低级缓存 L1 Cache中,不常访问的数据放在高级缓存 L3 Cache中 - 有很多复杂的控制单元: - 分支预测机制 --> 在硬件中判断语言的 if else break continue 执行; - 流水线数据前送机制 --> 判断如果马上要访问的数据,会用流水线机制把数据尽可能向前推送,减少等待时间 - 运算单元强大: - 支持整型、浮点型数据运算 - 支持与、或、非、逻辑运算

GPU:吞吐量导向设计

GPU - GPU 设计原则:增加指令吞吐 - GPU 特点: - 缓存小(如图 L2 Cache): - 缓存小 --> 指令访问缓存的次数显著减少 --> 提升内存访问吞吐 - 控制单元简单: - 没有分支预测机制 - 没有数据转发机制 - 精简运算单元 - 多长延时流水线以提高吞吐量(一行很多运算单元) - 需要大量线程来容忍延迟(每一行的运算单元控制指令只有一个)

GPU 与 CPU 对比

  • CPU 比 GPU,单条复杂指令延迟快 10 倍以上
  • GPU 比 CPU,单位时间内执行指令数量快 10 倍以上

适合使用 GPU 的场景

  • 计算密集的程序适合在 GPU: 数值计算的比例要远大于内存操作,因此内存访问的延迟可以被计算覆盖
  • 并行度高的程序适合在 GPU: 大任务可以拆分为执行相同指令的小任务,对复杂流程控制的需求较低
  • 控制复杂的程序

CUDA 编程(一) CPU 与 GPU 的基本知识
https://zzmes.github.io/2025/01/24/CUDA-1/
作者
YangYangYang
发布于
2025年1月24日
许可协议