NVIDIA(英伟达) GPU 芯片架构发展史

GPU 性能的关键参数

  1. CUDA 核心数量(个):决定了 GPU 并行处理能力,在 AI 等并行计算类业务下,CUDA 核心越多性能越好。

  2. 显存容量(GB):决定了 GPU 加载数据量的大小,在 AI 训练场景中,显存的大小决定了一次能够加载训练数据的量,在大模型训练时,显存容量很重要。

  3. 显存带宽(GB/s):是 GPU 芯片和显存之间的数据传输速率,作为决定性能最重要的因素之一,由显存频率和位宽决定。

    1. 显存位宽(bit):显存在一个时钟周期内所能传送数据的位数,位数越大则瞬间所能传输的数据量越大。

    2. 显存频率(MHz):反映了显存的速度。

  4. 浮点数算力(FLOPS):用来估算 GPU 的处理能力。

    1. 半精度(FP16):使用 2 个字节(16 位)进行存储。用于需要节省内存和加快计算速度的场景,如深度学习中的混合精度训练。在这些应用中,通过结合使用半精度和单精度浮点数,可以在保持模型精度的同时,减少内存占用和加快训练速度。

    2. 单精度(FP32):使用 4 个字节(32 位)进行存储。被广泛用于各种计算密集型应用,包括科学计算、图形渲染、深度学习等。在这些应用中,单精度浮点数提供了足够的精度和数值范围,以满足大多数计算需求。

    3. 双精度(FP64):使用 8 个字节(64 位)进行存储。用于需要高精度计算的场景,如复杂的科学模拟、计算化学、分子建模、流体动力学等。

NVIDIA GPU 系列型号分类

1. 消费级 GeForce 系列

  • RTX 50XX 系列(Blackwell)

  • RTX 40XX 系列(Ada Lovelace)

  • RTX 30XX 系列(Ampere)

  • RTX 20XX 系列(Turing)

  • GTX 16/10 系列(Turing/Pascal)

2. 专业工作站级

  • RTX A50XX 系列(Ada/Ampere)

  • RTX A60XX 系列(Ada/Ampere)

3. 数据中心级

  • Tesla H100 系列(Hopper)

  • Tesla A100 系列(Ampere)

  • Tesla L40 系列(Ada Lovelace)

NVIDIA GPU 架构发展简史

NVIDIA Tesla 系列服务器 GPGPU 用于大规模的分布式 AI 训练。

  • https://zh.wikipedia.org/wiki/NVIDIA_Tesla

图片

2008 - Tesla(特斯拉) 

Tesla 架构是 NVIDIA 第一个实现了统一着色器模型的芯片架构,具有完整的 Transform(坐标转换)、Lighting(光源处理)、Setup(三角形设置)和 Rendering(渲染引擎) 功能。针对 HPC 和 AI 场景,应用于早期的 CUDA 系列显卡中,但并非真正意义上的 GPGPU 芯片。

图片

  • 1 个 NVIDIA Tesla GPU 包含 7 个 TPC(Texture Processor Cluster,纹理处理集群)。

  • 1 个 TPC 包含 2 个 SM(Stream Multi-processor,流多处理器)。

  • 1 个 SM 包含:

    • 6 个 SP(Streaming Processor,流处理器)。SP 是 GPU 最基本处理单元,指令和任务最终都是在 SP 上处理的。GPU 所谓的并行计算,也就是有很多个 SP 在同时进行计算。

    • 2 个 SFU(Special Function Unit,特殊函数的计算单元)

    • 1 个 I-Cache(指令缓存)

    • 1 个 C-Cache(常量缓存)

    • 1 个 MT Issue(多线程指令获取)

    • 1 个 Shared Memory(共享内存)

  • 1 个共享的 L1 Cache(一级缓存)

  • 1 个共享的 Fetch/Dispatch(取指/分发)部件。

  • Load/Store Queues(访问存储单元),在 SM 和 Main Memory 之间快速传输数据;

  • Warp Scheduler(线程调度器),每个 Warp(线程束)包含了 32 个并行的 Threads,它们使用不同的数据执行相同的命令,Scheduler 会负责这些 Threads 的调度;

再细化每个  SP,包含了:

  • 1 个共享的 Fetch/Decode(取指/译码)部件。

  • 8 个 ALU(逻辑运算单元)。

  • 4 组 Execution contexts(执行环境),可 Concurrent but interleaved(并发交叉)执行 4 条 Instruction Streams(指令流)。

  • 每组 Execution contexts 有 8 个 Context,共计 32 个 Fragments(并发程序片元),即 32 个 CUDA threads。

图片

2010 - Fermi(费米) 

Fermi 是第一个真正意义上的 GPGPU 架构芯片,拥有 30 亿个晶体管,共计 512 个 CUDA core。并提高了以下关键特性:

  1. 提高 FP64 双精度性能

  2. 支持 ECC:ECC 支持在 DC 场景中安全地部署大量 GPU,并确保数据敏感型 Application 免受内存错误的影响。

  3. True Cache Hierarchy:一些并行算法无法使用 GPU 的 SM(Share Memory),用户需要一个真正的缓存架构来帮助他们。

  4. 更多的共享内存:许多 CUDA 程序员要求超过 16 KB 的 SM 来加速他们的应用程序。

  5. 更快的上下文切换:用户要求在应用程序和更快的图形和计算互操作之间进行更快的上下文切换。

  6. 更快的 Atomic Operations(原子操作):用户要求为他们的并行算法提供更快的读-修改-写原子操作。

图片

  • 一个 Fermi GPU 拥有 16 个 SM。

  • 每个 SM:

    • 2 个 Warp(线程束)

    • 2 组,共 32 个 CUDA Core

    • 16 组加载存储单元(LD/ST)

    • 4 个特殊函数单元(SFU)

  • 每个 Warp:

    • 1 个 Warp 调度器(Warp Scheduler)

    • 16 个 Core

    • 分发单元(Dispatch Unit)

  • 每个 Core:

    • 1 个 FPU(浮点数单元)

    • 1 个 ALU(逻辑运算单元)

2012 - Kepler(开普勒) 

Kepler 的架构设计思路是减少 SM 单元数(在这一代中叫 SMX 单元),增加每组 SM 单元中的 CUDA core 数,每个 SM 单元的 CUDA core 数由 Fermi 架构的 32 个增至 192 个。相较于 Fermi,Kepler 更快,效率更高,性能更好。

图片

Kepler 将 SM 升级到了 SMX,支持动态创建渲染线程(下图),以降低 CPU 和 GPU 之间的数据传输延迟。

每个 SMX:

  • 4 个 Warp Scheduler,8 个 Dispatch Unit。

  • 绿色:192 个 CUDA 内核,分在 12 条 lane 上,每条分别是 16 个。

  • 黄色:64 个 DP 双精度运算单元,分在 4 条 lane 上,每条 lane 上 16 个。

  • 32 个 LD/ST Unit。

  • 32 个 SFU。

图片

2014 - Maxwell(麦克斯韦) 

Maxwell 的 SM 单元和 Kepler 相比又有很大变化,这一代的 SM 单元更像是把 4 个 Fermi 的 SM 单元,按照 2x2 的方式排列在一起,这一代称之为 SMM 单元。

SMM 使用基于象限的设计,具有四个 32 CUDA core 的 Processing blocks(处理块),每个处理块都有一个专用的 Warp 调度程序,能够在每个时钟分派两条指令。

  • 每个 Maxwell GPU 有 4 个 GPC,每个 GPC 有 4 个 SMM。

  • 每个 SMM 单元:

    • 八个纹理单元(texture units)。

    • 一个多态引擎(Polymorph engine)的图形几何处理。

    • 专用寄存器文件和共享内存。

每个处理块:

  • 1 个 Warp Scheduler,2 个 Dispatch Unit。

  • 绿色:32 个 CUDA core。

  • 8个 LD/ST Unit。

  • 8个 SFU。

图片

2016 - Pascal(帕斯卡) 

Pascal 将处理器和数据集成在同一个程序包内,以实现更高的计算效率。

Pascal 的 CUDA core 总数从 Maxwell 的每组 SM 单元 128 个减少到了每组 64 个,这一代最大的特点是又把 DP 双精度运算单元加回来了。制程工艺升级到了 16nm,性能大幅提升,功耗却不增加。1080 系列、1060 系列基于 Pascal 架构。

Pascal 拥有 GP100、GP102 两种大核心,核心是一个完整的 GPU 模组。

  • GP100:3840 个 CUDA core,60 组 SM 单元;

  • GP102:3584 个 CUDA core,28 组 SM 单元;

图片

GP100 核心的 SM 单元:

  • 每个 SM 单元中,分为 2 个 Process Block,每个 Process Block 中:

    • 1 个 Warp Scheduler,2 个 Dispatch Unit。

    • 绿色:32 个 CUDA core。

    • 黄色:16 个 DP 双精度运算单元,分在 2 条 lane 上,每条 lane 上 8 个。

    • 8 个 LD/ST Unit。

    • 8 个 SFU。

2017 - Volta(伏特) 

Volta 配备了 640 个 Tensor 核心,每秒可提供超过 100 兆次浮点运算(TFLOPS)的深度学习效能,用于深度学习、AI 运算等,比前一代的 Pascal 架构快 5 倍以上。

Tesla V100(Volta 架构)

  • CUDA 核心:5120 个

  • 显存容量:16GB/32GB HBM2

  • 显存带宽:900 GB/s

  • 浮点算力:

    • FP32:约 15.7 TFLOPS

    • FP64:约 7.8 TFLOPS(双精度为单精度的一半)

  • 价格:约 10,000 美元

图片

从 Volta 开始,将一个 CUDA core 拆分为两部分:

  1. FP32

  2. INT32

好处是在同一个时钟周期里,可以同时执行浮点和整数指令,提高计算速度。

Volta 架构的 GV100 核心。每个 SM 单元中,分为 4 个 Process Block,每个 Process Block 中:

  • 1 个 Warp Scheduler,1 个 Dispatch Unit。

  • 8 个 FP64 Core。

  • 16 个 INT32 Core。

  • 16 个 FP32 Core。

  • 2 个 Tensor Core。

  • 8 个 LD/ST Unit。

  • 4 个 SFU。

图片

2018 - Turing(图灵) 

Turing 架构配备了名为 RT Core 的专用光线追踪处理器,能够以高达每秒 10 Giga Rays 的速度对光线和声音在 3D 环境中的传播进行加速计算。

Turing 架构将实时光线追踪运算加速至上一代 NVIDIA Pascal™ 架构的 25 倍,并能以高出 CPU 30 多倍的速度进行电影效果的最终帧渲染。2060 系列、2080 系列显卡也是跳过了 Volta 直接选择了 Turing 架构。

图片

Turing架构目前一共有 3 种核心:

  1. TU102 核心

  2. TU104 核心

  3. TU106 核心

Turing 架构的 TU102 GPU,它的特点如下:

  • 6 GPC(图形处理簇)

  • 36 TPC(纹理处理簇)

  • 72 SM(流多处理器)

  • 每个 GPC 有 6 个 TPC,每个 TPC 有 2 个 SM

  • 4,608 CUDA core

  • 72 RT core

  • 576 Tensor core

  • 288 纹理单元

  • 12x32 bit GDDR6 内存控制器(共 384 位)

TU102 核心的单个 SM 的结构图如下:

  • 每个 SM 包含 4 个处理块,每个处理块中:

    • 1 个 Warp Scheduler,1 个 Dispath Unit。

    • 16 个 INT32 Core。

    • 16 个 FP32 Core。

    • 2 个 Tensor Core。

    • 4 个 LD/ST Unit。

    • 4 个 SFU。

    • 256 KB 寄存器文件。

图片

2020 - Ampere(安培) 

2020 年 5 月 14 日,NVIDIA 发布了最新一代的 A100 GPU 产品(简称 GA100),采用 Ampere 架构。

Tesla A100(Ampere 架构)

  • CUDA 核心:6912 个

  • 显存容量:40GB/80GB HBM2

  • 显存带宽:1,555 GB/s(80GB 版本)

  • 浮点算力:

    • FP32:约 19.5 TFLOPS

    • TF32(AI 优化):156 TFLOPS

  • 价格:约 10,000 美元

图片

下面我们通过 Ampere 架构为例,介绍 GPU 的组成部分。

图片

Ampere 架构沿用了成熟的 GPC-TPC-SM 多级架构,包含了:

  • 8 组 GPC(Graphics Processor Cluster,图形处理簇)。

    • 每组 TPC 包含 8 组 SM(Stream Multiprocessor,流多处理器)。

    • 每组 GPC 包含 8 组 TPC(Texture Processor Cluster,纹理处理簇)。

  • 2 组 L2 Cache,避免计算单元访问远端 L2 Cache 时出现高延迟。每组 L2 Cache 为 40MB,在一定程度上减轻计算单元对显存带宽的依赖。

  • PCI Express 4.0

  • NVLink 3.0

图片

再将 A100 核心的 SM 展开,可以看到 Ampere 的 SM 单元设计沿用了从 Volta 开始的分精度计算思路,将计算核心分成了:

  1. 针对整数计算的 INT32 单元

  2. 针对浮点计算的 FP32、FP64 单元

  3. 针对 FP16、INT8 等 AI 计算中常见的数据类型的 Tensor Cores

每个 SM 包含了:

  • 1 个共享的 L1 Ins-Cache(一级指令缓存)

  • 1 个共享的 L1 Data-Cache(一级数据缓存)

  • 1 个共享的 Shared Memory(共享内存)

  • 4 个子模块

其中 RT Cores 是游戏卡才有的,面对纯计算用途的 GA100 并不需要。

每个子模块包含了:

  • 1 个 L0 I-Cache(指令缓存)

  • 1 个 Warp Scheduler(线程调度器),每个 Warp(线程束)包含了 32 个并行的 Threads,它们使用不同的数据执行相同的命令,Scheduler 会负责这些 Threads 的调度。Warp Scheduler 的指令通过 Dispatch Units 发送到 Core 执行。

  • 1 个 Dispatch Unit(取指/分发)部件。

  • 1 个 Register File(寄存器文件)。

  • 16 个针对浮点计算的 FP32 CUDA Core。

  • 16 个针对整数计算的 INT32 CUDA Core。

  • 8 个针对浮点计算的 FP64 CUDA Core。

  • 1 个针对 FP16、INT8 等 AI 计算的 Tensor Core 3.0,几乎可以加速所有的常见数据类型,包括:FP16、BF16、TF32、FP64、INT8、INT4 和二进制。

  • 8 个 LD/ST(Load/Store Queues,访问存储单元),在 SM 和 Main Memory 之间快速传输数据;

  • 1 个 SFU(Special Function Unit,特殊函数的计算单元),执行特殊数学运算,例如:Sin、Cos、Log 等。

图片

而 GA102 核心的 SM 单元,分成 4 个处理块,每个处理块中:

  • 1 个 Warp Scheduler,1 个 Dispatch Unit。

  • 8 个 FP64 Core。

  • 16 个 FP32 Core。

  • 16 个 INT32 Core。

  • 1 个 Tensor Core。

  • 8 个 LD/ST Unit。

  • 4 个 SFU。

2022 - Hopper(霍珀) 

Hopper 架构的 H100 GPU 是 NVIDIA 划时代的产品,其 CUDA 核心数量达到了惊人的 14,592~16,896 颗,转为 AI 大模型训练开发。

Tesla H100(Hopper 架构)

  • CUDA 核心:14,592~16,896

  • 显存容量:80GB HBM3

  • 显存带宽:3 TB/s(理论值)

  • 浮点算力:

    • FP8(AI 优化):4,000 TFLOPS(稀疏模型)

  • 价格:约 30,000 美元(含企业支持服务38)

  • 应用:万亿参数语言模型训练、超大规模数据中心

H100 相对于 A100 有了质的飞跃。配备 InfiniBand interconnect 的 H100 的性能是 A100 的 30 倍。新的 NVLink 交换系统互连针对一些最大且最具挑战性的计算工作负载,这些工作负载需要跨多个 GPU 加速节点的模型并行性来适应。这些工作负载带来了新一代的性能飞跃,在某些情况下, InfiniBand 的性能比 H100 再次提高了三倍。

图片

H100 架构详解推荐浏览官方文档:https://developer.nvidia.com/zh-cn/blog/nvidia-hopper-architecture-in-depth/

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/982149.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FFMPEG利用H264+AAC合成TS文件

本次的DEMO是利用FFMPEG框架把H264文件和AAC文件合并成一个TS文件。这个DEMO很重要,因为在后面的推流项目中用到了这方面的技术。所以,大家最好把这个项目好好了解。 下面这个是流程图 从这个图我们能看出来,在main函数中我们主要做了这几步&…

获取Kernel32基地址

暴力搜索 32位在4G内存搜索有一定可行性,但是处理起来其实还是比较麻烦的,因为内存不可读会触发异常,需要对这些异常问题进行处理。 优化思路:缩小范围、增大搜索步长 (1)不优化,原始内存特征匹配,容易出错&#xf…

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 与 JSP 的协作:MVC 模式的雏形

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Servl…

如何在Github上面上传本地文件夹

前言 直接在GitHub网址上面上传文件夹是不行的&#xff0c;需要一层一层创建然后上传&#xff0c;而且文件的大小也有限制&#xff0c;使用Git进行上传更加方便和实用 1.下载和安装Git Git - Downloads 傻瓜式安装即可 2.获取密钥对 打开自己的Github&#xff0c;创建SSH密钥&…

软件高级架构师 - 软件工程

补充中 测试 测试类型 静态测试 动态测试 测试阶段 单元测试中&#xff0c;包含性能测试&#xff0c;如下&#xff1a; 集成测试中&#xff0c;包含以下&#xff1a; 维护 遗留系统处置 高水平低价值&#xff1a;采取集成 对于这类系统&#xff0c;采取 集成 的方式&…

初始提示词(Prompting)

理解LLM架构 在自然语言处理领域&#xff0c;LLM&#xff08;Large Memory Language Model&#xff0c;大型记忆语言模型&#xff09;架构代表了最前沿的技术。它结合了存储和检索外部知识的能力以及大规模语言模型的强大实力。 LLM架构由外部记忆模块、注意力机制和语…

react中如何使用使用react-redux进行数据管理

以上就是react-redux的使用过程&#xff0c;下面我们开始优化部分&#xff1a;当一个组件只有一个render生命周期&#xff0c;那么我们可以改写成一个无状态组件&#xff08;UI组件到无状态组件&#xff0c;性能提升更好&#xff09;

Vue 监听器的魔法之旅:@Watch(‘form.productId’) vs @Watch(‘value’) 大揭秘!✨

以下是一篇技术博客&#xff0c;主题围绕 Watch(form.productId) 和 Watch(value) 这两个 watcher 的功能、区别及使用场景&#xff0c;基于 compare-form.vue 的代码。准备好一起探索 Vue 监听器的魔法了吗&#xff1f;&#x1f604; &#x1f604; Vue 监听器的魔法之旅&…

SqlSugar 语法糖推荐方式

//方式1&#xff1a;var dd _repository._Db.Queryable<ConfigAggregateRoot, UserRoleEntity>((o, p) > o.Id p.Id).Select((o, p) > new{o.Id,o.Remark,p.RoleId,});//方式2&#xff1a;不推荐使用&#xff0c;建议优先使用 Lambda 表达式&#xff0c;因为它更…

数据结构:八大排序(冒泡,堆,插入,选择,希尔,快排,归并,计数)详解

目录 一.冒泡排序 二.堆排序 三.插入排序 四.选择排序 五.希尔排序 六.快速排序 1.Lomuto版本&#xff08;前后指针法&#xff09; 2.Lomuto版本的非递归算法 3.hoare版本&#xff08;左右指针法&#xff09; 4.挖坑法找分界值&#xff1a; 七.归并排序 八.计数排序…

?算法1-4 小A点菜

题目描述 不过 uim 由于买了一些书&#xff0c;口袋里只剩 M 元 (M≤10000)。 餐馆虽低端&#xff0c;但是菜品种类不少&#xff0c;有 N 种 (N≤100)&#xff0c;第 i 种卖 ai​ 元 (ai​≤1000)。由于是很低端的餐馆&#xff0c;所以每种菜只有一份。 小 A 奉行“不把钱吃…

Linux设备驱动开发之摄像头驱动移植(OV5640)

驱动移植 这里用的是NXP提供的原厂linux内核源码&#xff0c;目的是学习ov5640相关摄像头驱动的移植。如图&#xff0c;下面是linux源码自带的ov5640的驱动相关代码&#xff1a; 这个是ov5640相关头文件&#xff1a; 新建一个文件夹保存这些ov5640的驱动文件&#xff0c;打算在…

DeepSeek使用手册分享-附PDF下载连接

本次主要分享DeepSeek从技术原理到使用技巧内容&#xff0c;这里展示一些基本内容&#xff0c;后面附上详细PDF下载链接。 DeepSeek基本介绍 DeepSeek公司和模型的基本简介&#xff0c;以及DeepSeek高性能低成本获得业界的高度认可的原因。 DeepSeek技术路线解析 DeepSeek V3…

ArcGIS Pro应用指南:如何为栅格图精确添加坐标信息

一、引言 在地理信息系统中&#xff0c;栅格图是一种重要的数据类型。 然而&#xff0c;有时我们从网络上获取的栅格图并不包含坐标信息&#xff0c;这使得它们难以与其他带有坐标信息的数据进行集成和分析。 为了解决这一问题&#xff0c;我们需要对栅格图进行地理配准&…

机器学习4-PCA降维

1 降维 在数据处理过程中&#xff0c;会碰到维度爆炸&#xff0c;维度灾难的情况&#xff0c;为了得到更精简更有价值的信息&#xff0c;我们需要进一步处理&#xff0c;用的方法就是降维。 降维有两种方式&#xff1a;特征抽取、特征选择 特征抽取&#xff1a;就是特征映射…

辛格迪客户案例 | 深圳善康医药科技GMP培训管理(TMS)项目

01 善康医药&#xff1a;创新药领域的探索者 深圳善康医药科技股份有限公司自2017年创立以来&#xff0c;便扎根于创新药研发领域&#xff0c;专注于成瘾治疗药物的研究、生产与销售。公司坐落于深圳&#xff0c;凭借自身独特的技术优势与研发实力&#xff0c;在行业内逐渐崭露…

前端基础之组件

组件&#xff1a;实现应用中局部功能代码和资源的集合 非单文件组件 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"…

vue 安装依赖npm install过程中报错npm ERR! cb() never called!

解决办法&#xff1a; 步骤 1&#xff1a;清理 npm 缓存 npm cache clean --force rm -rf node_modules package-lock.json 步骤 2&#xff1a;一个第三方 npm 工具包&#xff0c;功能是 自动重试失败的 npm install 操作&#xff0c;适用于网络不稳定或依赖源不可靠的场景 …

【Oracle学习笔记】1.数据库组成对象

在Oracle数据库中&#xff0c;数据库对象是用于存储、管理和操作数据的基本构建块。以下是Oracle数据库中常见的对象类型及其简要说明&#xff1a; 1. 表&#xff08;Table&#xff09; ● 定义&#xff1a;表是存储数据的基本结构&#xff0c;由行&#xff08;记录&#xff0…

【Python · Pytorch】Conda介绍 DGL-cuda安装

本文仅涉及DGL库介绍与cuda配置&#xff0c;不包含神经网络及其训练测试。 起因&#xff1a;博主电脑安装了 CUDA 12.4 版本&#xff0c;但DGL疑似没有版本支持该CUDA版本。随即想到可利用Conda创建CUDA12.1版本的虚拟环境。 1. Conda环境 1.1 Conda环境简介 Conda&#xff1…