技术总结|十分钟了解GPU

最近在看《黄仁勋:英伟达之芯》,这本书讲述了英伟达是如何一步一步优化GPU,感觉创业不易,不过本文为了让大家更好了解GPU,所以简单汇总了一些知识点。

1、GPU这么快?

作为程序员都知道我们现有的程序包括两种类型:

  • 顺序执行的程序
  • 并行执行的程序

1.1 顺序执行

less 复制代码
def sequential_calculation():
    a = 0
    b = 1
   
    for _ in range(1000):
        a, b = b, a + b
    
    return b

从上面代码看出,a和b的计算是相互依赖的,这段代码是没法直接改为并行执行。

1.2 并行执行

ini 复制代码
def parallel_multiply():
    numbers = range(1000)
    results = []

    for n in numbers:
        results.append(n * 2)

    return results

并行是可以让多个程序同时执行,比如上面的代码,由于results每个元素的结果是独立的,可以让numbers的每个元素独立计算,不需要依赖顺序。

1.3 GPU更适合处理并行代码

从广义上讲,GPU更适合处理并行代码,CPU更适合处理顺序代码,由于CPU是大核,比如apple的M3芯片有8个CPU,而GPU是小核,比如英伟达的 A100 有5120个核心。

GPU拥有数千个简单的核心,可以同时对不同的数据执行相同的操作,所以GPU对于简单的并行计算是非常快的,比如矩阵运算,图像处理,渲染视频游戏图形,深度学习等。其中渲染视频游戏图形就是许多简单重复计算,在你玩游戏的过程中,像素实际是一个矩阵,如果每一帧需要重新渲染,实际可以利用数千核同时计算,这就是为什么GPU在游戏渲染上非常快。

1.4 厨师和助手

CPU 想象成忙碌餐厅厨房里的厨师,厨师可以独立完成很多事情:

  • VIP 客人有特殊饮食要求时,立即调整烹饪计划
  • 在准备精致酱汁和检查烤蔬菜之间无缝切换
  • 通过重新组织整个厨房工作流程来处理意外情况
  • 精心安排多道菜品,让它们在恰当的时机上菜
  • 在处理数十个处于不同完成状态的订单的同时保持菜品质量

相比之下,GPU 核心就像一百名擅长重复性任务的助手,他们可以在几秒钟内切好洋葱,但无法有效地管理整个厨房,如果你要求 GPU 处理不断变化的晚餐服务需求,它会很吃力。

2、FLOPS

FLOPS 即每秒浮点运算次数,衡量处理器每秒可以对十进制数执行多少次数学计算,它对于科学模拟、人工智能训练和图形渲染等任务尤为重要,单位如下:

  • KFLOPS:千(千)FLOPS - 10³ FLOPS
  • MFLOPS:百万 FLOPS - 10⁶ FLOPS
  • GFLOPS:千兆(十亿)FLOPS - 10⁹ FLOPS
  • TFLOPS:Tera(万亿)FLOPS - 10¹² FLOPS

2.1 什么是浮点运算

浮点运算是指对浮点数执行的数学计算,包括:加法和减法,乘法,除法,平方根,指数和对数等。 每一个都算作一次浮点运算,因此,当我们看到 NVIDIA A100 GPU 的"9.7 TFLOPS"之类的数字时,这意味着理论上它每秒可以执行 9.7 万亿次这些基本运算。

2.2 浮点精度

您可能会看到有关 GPU 性能的浮点精度讨论:

例如:A100 GPU 对于 64 位双精度为 9.7 TFLOPS,对于 32 位单精度为 156 TFLOPS。

为什么存在不同的精度,主要考虑计算的性能和存储大小:

  • 半精度(浮点数 16 位):存储更少,精度更低,计算速度更快,例如:3.141(约3-4位数字)
  • 单精度(浮点数 32 位):中等存储,中等精度,例如:3.1415927(约7-8位数字)
  • 双精度(浮点数 64 位):存储更多,更精确,计算速度更慢,例如:3.141592653589793(约15-17位数字)

通常对于视频游戏通常使用单精度,而科学模拟可能需要双精度(包括现在的大模型计算)。

3、GPU架构

NVIDIA GPU架构主要由几个模块组成:

  • CUDA 核心:GPU 架构中的主要计算单元,能够处理各种数学和逻辑运算;
  • 内存系统:包括 L1、L2 高速缓存和共享内存等,用于存储数据和指令,以减少 GPU 访问主存的延迟;
  • 高速缓存和缓存行:用于提高 GPU 的内存访问效率;
  • TPC/SM:CUDA 核心的分组结构,一个 TPC 包含两个 SM,每个 SM 都有自己的 CUDA 核心和内存;
  • Tensor Core( 2017 年 Volta 架构引入):Tensor张量核心,用于执行张量计算,支持并行执行FP32与INT32运算;
  • RT Core(2018 年 Turing 架构引入 ):光线追踪核心,负责处理光线追踪加速;

从上图中可以看出 GPU 主要由许多的 SM 组成,SM 全称为Streaming Multiprocessor流式多处理器,是NVIDIA GPU架构中的重要组成部分,也是 GPU 的基本计算单元。每个 SM 由多个 CUDA 核心、纹理单元、Tensor Core、流控制器和存储器等辅助单元组成,可以同时执行多个计算任务,并具有高度的灵活性和性能。

参考

(1)codingstuff.substack.com/p/if-gpus-a...

相关推荐
喝不完一杯咖啡1 分钟前
【AI时代】可视化训练模型工具LLaMA-Factory安装与使用
人工智能·llm·sft·llama·llama-factory
huaqianzkh29 分钟前
理解构件的3种分类方法
人工智能·分类·数据挖掘
后端码匠30 分钟前
Spring Boot3+Vue2极速整合:10分钟搭建DeepSeek AI对话系统
人工智能·spring boot·后端
用户2314349781430 分钟前
使用 Trae AI 编程平台生成扫雷游戏
人工智能·设计
神经美学_茂森1 小时前
神经网络防“失忆“秘籍:弹性权重固化如何让AI学会“温故知新“
人工智能·深度学习·神经网络
大囚长1 小时前
AI工作流+专业知识库+系统API的全流程任务自动化
运维·人工智能·自动化
可乐张1 小时前
AutoGen 技术博客系列 (九):从 v0.2 到 v0.4 的迁移指南
后端·llm
阿_旭1 小时前
【超详细】神经网络的可视化解释
人工智能·深度学习·神经网络
Se7en2581 小时前
提升 AI 服务的稳定性:Higress AI 网关的降级功能介绍
人工智能
计算机-秋大田1 小时前
基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)
java·开发语言·spring boot·后端·spring·课程设计