3 分钟看完 NVIDIA GPU 架构及演进

近期随着 AI 市场的爆发式增长,作为 AI 背后技术的核心之一 GPU(图形处理器)的价格也水涨船高。GPU 在人工智能中发挥着巨大的重要,特别是在计算和数据处理方面。目前生产 GPU 主流厂商其实并不多,主要就是 NVIDIA、AMD、Intel、高通等厂家。本文将主要聊聊 NVIDIA GPU 的核心架构及架构演进。

深入了解GPU架构

在探讨 NVIDIA GPU 架构之前,我们先来了解一些相关的基本知识。GPU 的概念,是由 NVIDIA 公司在 1999 年发布 Geforce256 图形处理芯片时首先提出,从此 NVIDIA 显卡的芯就用 GPU 来称呼,是专门设计用于处理图形渲染的处理器,主要负责将图像数据转换为可以在屏幕上显示的图像。

与 CPU 不同,GPU 具有数千个较小的内核(内核数量取决于型号和应用),因此 GPU 架构针对并行处理进行了优化。GPU 可以同时处理多个任务,并且在处理图形和数学工作负载时速度更快。GPU 架构是赋予 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 架构引入 ):光线追踪核心,负责处理光线追踪加速。

此外,NVIDIA GPU 架构还包括内存控制器、高速缓存控制器、CUDA 编译器和驱动程序等其他组件,这些组件与SM 和其他核心组件协同工作,可以实现高效的并行计算和内存访问,提高 GPU 的性能和能效。下面我们来详细了解一下这些 GPU 架构每一部分的作用及功能。

Streaming Multiprocessor(SM)

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

最先支持 CUDA 的 GPU —— G80 或 GeForce 8800 GTX,包含 8 个 TPC,每一个 TPC 中有两个 SM,一共有 16 个 SM。接下来支持 CUDA 的 GPU 是 GT200 或 GeForceGTX 280,它增加了 TPC 中的 SM 数量,包含 10 个 TPC 并且每个 TPC 含有 3 个 SM,总共是 30 个 SM。每一代 GPU 架构所支持的 SM 核心数量都不相同,如在 2020 年 Ampere 架构的完整 GA102 核心中,总共有 92 个 SM,每个 SM 包含 128 个 CUDA 核心、4 个 Tensor 核心和 1 个RT 核心。

CUDA Core

看完 SM 的介绍,接下来我们看看构成 SM 最重要的组成部分 CUDA Core。

CUDA 全称为统一计算设备架构 (Compute Unified Device Architecture) ,是一个并行计算平台,同时也是一个应用程序编程接口 (API)。它是由 NVIDIA 专门设计,目的在于让软件开发人员能够更好地控制他们可以使用的物理资源。使用 C 或 C++ 编码的计算机程序员对资源分配有很大的控制权。CUDA 系统极大地促进了 OpenACC 和 OpenCL 等框架的普及和使用。CUDA 核心也是并行处理器,允许不同处理器同时处理数据。这与双核或四核 CPU 类似,只不过 GPU 有数千个 CUDA 核心。区别在于 CPU 更像是一个管理员,负责控制整个计算机,而 GPU 适合做具体的工作。

并行计算

CUDA 的巨大优势是任务并行化,允许通过扩展在 C 和 C++ 中并行工作,处理不同重要性级别的任务和数据。这些并行化任务可以使用各种高级语言来执行,例如 C 语言、C++以及 Python,或者简单地使用包含 OpenACC 指令的开放标准。

CUDA 是目前最常用的任务加速平台,并且技术的发展已经取得了巨大的进步。CUDA 技术是使用最广泛、最重要的技术之一。

应用范围

CUDA 应用范围包括加密哈希、物理引擎、游戏开发等相关项目,在科学行业,在测量、测绘、天气预报和其他等相关项目得到了很大改善和简化。目前,数以千计的研究人员可以在学术和制药领域从事分子动力学研究,这简化了药理学的开发和研究,从而在治疗癌症、阿尔茨海默病和其他当今无法治愈的疾病等复杂疾病方面在更短的时间内取得进展。

CUDA 还可以对有风险的金融操作进行预测,将效率加快至少十八倍或更多。其他例子包括 Tesla GPU 在云计算和其他需要强大工作能力的计算系统中广受好评。CUDA 还允许自动驾驶车辆简单高效地运行,能够进行其他系统无法完成的实时计算。这种计算敏捷性使车辆能够在很短的时间内做出重要决策,避开障碍物,顺利行驶或避免事故。

Tensor Core

随着 GPU 开始用于人工智能和机器学习工作,NVIDIA 从 2017 年开始在其数据中心 GPU 的 Volta 架构中引入了 Tensor Core。但是直到NVIDIATuring 架构的推出(RTX 20 系列 GPU)这些核心才出现在消费类 GPU 中。

CUDA 核心足以满足计算工作负载,但 Tensor Core 的速度明显更快。CUDA 核心每个时间周期只能执行一项操作,但 Tensor 核心可以处理多项操作,从而带来令人难以置信的性能提升。从根本意义上来说,Tensor Core 所做的就是提高矩阵乘法的速度。

计算速度的提升确实是以准确性为代价的,从这点上来说 CUDA 核心的准确度要高得多。但是在训练机器学习模型时,Tensor Core 在计算速度和总体成本方面要有效得多,此时准确性的损失常常被忽略。

较之 CUDA Core 专门处理图形工作负载,Tensor Core 更擅长处理数字工作负载。在它们同时工作的过程中,在某些场景下可以互换。

RT Core

2018 年 NVIDIA 发布了新一代的旗舰显卡 RTX 2080,搭载了全新的 Turing(图灵)架构。全新的架构也同时添加了名为 RT Core 的计算单元,相当于在 Volta 上增加的 Tensor Core,都是为了特殊应用架构而设计的计算单元。该计算单元的目的是为了让 GPU 拥有实时光线追踪的能力,一种可以让画面更换新的渲染演算法。

光线追踪(Ray Tracing)的原理是从用户端为起点,寻找光线反射和折射的路径并算出用户会看到的物体颜色及亮度。然而,由于使大量光线在空间中反射决策,且空间中实际的状况未知,每一张图所需的计算量极其巨大,无法即时计算出结果,因此游戏产业尚未大量采用该技术。在发布的 RTX 2080 显卡中,NVIDIA 正式将 RT Core 加入绘图卡,让实时光学渲染法(Rendering)不再是说说而已。

GPU架构演进

在了解完 GPU 架构组成部分后,我们来看看 NVIDIA GPU 架构的演进。自 NVIDIA 成立之初,其 GPU 架构历经多次变革。从 G80、GT200 系列,到 Fermi、Kepler、Pascal 和 Volta 架构等,以及近期的 Ampere 和 Hopper 架构。值得一提的是架构命名方式从 Tesla 架构开始每一代以科学家命名,每一代都有其独特的设计和特点,简单介绍下其中几个架构。

  1. G80 架构:英伟达第一个 GPU 架构,采用了 MIMD(多指令流多数据流)标量架构,拥有 128 个 SP(流处理器),核心频率范围从 250MHz 到 600MHz,搭配 DDR3 显存。该架构是当时最强大的 GPU 之一,但是功耗较高。
  2. Fermi 架构:英伟达第一个采用 GPU-Direct 技术的 GPU 架构,它拥有 32 个 SM(流多处理器)和 16 个 PolyMorph Engine 阵列,每个 SM 都拥有 1 个 PolyMorph Engine 和 64 个 CUDA 核心。该架构采用了 4 颗芯片的模块化设计,拥有 32 个光栅化处理单元和 16 个纹理单元,搭配 GDDR5 显存。
  3. Volta 架构:采用了全新的设计理念和技术,拥有 256 个 SM 和 32 个 PolyMorph Engine 阵列,每个 SM 都拥有 64 个 CUDA 核心。该架构采用了全新的 Tensor 张量核心、ResNet 和 InceptionV3 加速模块等技术,搭配 GDDR6X 显存。
  4. Turing 架构:代表产品为 GeForce RTX 20 系列。该架构首次引入了光线追踪(Ray Tracing)和深度学习超级采样(DLSS),为游戏和设计领域带来了革命性的视觉效果和性能提升。此外,图灵架构还优化了着色器性能,以提高渲染效率和能效比。Turing SM 设计采用全新架构,每个 TPC(Texture and Compute Cluster,纹理和计算集群)均包含两个 SM,每个 SM 共有 64 个 FP 32 核心和 64 个 INT32 核心。也就是说,每个 SM 都包含 128 个核心。这些核心可以并行执行 FP32 与 INT32 运算。每个 Turing SM 还拥有 8 个混合精度 Turing Tensor 核心和 1 个 RT(Ray Tracing,光线追踪)核心。
  5. Ampere 架构:代表产品为 GeForce RTX 30 系列。该架构继续优化并行计算能力,并引入了更先进的 GDDR6X 内存技术,大幅提高了内存带宽和性能。相比 Turing 架构,Ampere 架构中的 SM 在 Turing 基础上增加了一倍的 FP32 运算单元,这使得每个 SM 的 FP32 运算单元数量提高了一倍,同时吞吐量也就变为了一倍。此外,安培架构还改进了着色器性能和张量核(Tensor Cores),进一步加速深度学习和人工智能任务的处理速度。

经过几十年的探索和发展,NVIDIA 的 GPU 架构以其层次化的内存设计、多线程技术、优化内存层次结构、混合精度计算技术和自动功耗优化技术,实现了高效、可扩展、灵活和能效比这几个关键目标。从最初的 GeForce 系列到最新的 Hopper 架构,NVIDIA 不断引领着 GPU 架构的发展,提供了强大的性能和创新的技术,从而在图形处理和人工智能等领域取得了显著的成功。

又拍云近期联合厚德云推出 GPU 产品,现活动期间新用户注册即可免费体验 RTX4090 GPU,暂不限体验时长哦! 有兴趣的同学点击下方链接即可免费体验~

传送门:RTX4090 0元体验入口

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React 递归手写流程图展示树形数据

需求 根据树的数据结构画出流程图展示,支持新增前一级、后一级、同级以及删除功能(便于标记节点,把节点数据当作label展示出来了,实际业务中跟据情况处理) 文件结构 初始数据 [{"ticketTemplateCode": &…

链表经典OJ题(链表回文结构,链表带环,链表的深拷贝)

目录 前言 1.反转一个单链表。 2. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 3.链表的回文结构。 4.链表带环问题(*****) 4.1是否带环 4.2 入环的节点 5.随机链表的复制(链表的深拷贝) 前言…

kubernetes (k8s)的使用

一、kubernetes 简介 谷歌2014年开源的管理工具项目,简化微服务的开发和部署。 提供功能:自愈和自动伸缩、调度和发布、调用链监控、配置管理、Metrics监控、日志监控、弹性和容错、API管理、服务安全等。官网:https://kubernetes.io/zh-cn…

KubeSphere v3.4.0 部署K8S Docker + Prometheus + grafana

KubeSphere v3.4.0 部署K8S 1、整体思路2、修改linux主机名3、 离线安装3.1 问题列表3.2 执行命令成功列表 1、整体思路 将KubeSphere v3.4.0 安装包传输到其中一台机器修改Linux主机名(选取3台,修改为master01、master02、master03)安装官方…

2023-11-12 LeetCode每日一题(Range 模块)

2023-03-29每日一题 一、题目编号 715. Range 模块二、题目链接 点击跳转到题目位置 三、题目描述 Range模块是跟踪数字范围的模块。设计一个数据结构来跟踪表示为 半开区间 的范围并查询它们。 半开区间 [left, right) 表示所有 left < x < right 的实数 x 。 实…

Java必刷入门递归题×5(内附详细递归解析图)

目录 1.求N的阶乘 2.求12...N的和 3.顺序打印数字的每一位 4.求数字的每一位之和 5.求斐波拉契数列 1.求N的阶乘 &#xff08;1&#xff09;解析题目意思 比如求5的阶乘&#xff0c;符号表示就是5&#xff01;&#xff1b;所以5&#xff01;5*4*3*2*1我们下面使用简单的…

Android中Toast与Snack

1. Toast : 使用Toast类的makeText()方法创建Toast对象&#xff0c;makeText()方法有两个参数&#xff0c;第一个参数为显示Tosat的上下文环境&#xff0c;第二个参数为显示时长&#xff08; Toast.LENGTH_LONG 或 Toast.LENGTH_SHORT &#xff09;。 使用Toast类的show()方法…

【ubuntu 快速熟悉】

ubuntu 快速熟悉 2.ubuntu桌面管理器3.ubuntu常见文件夹说明4.ubuntu任务管理器4.1 gnome桌面的任务管理器4.2 实时监控GPU4.3 top 命令 5.ubuntu必备命令5.1 .deb文件5.2 查找命令5.2.1 find文件搜索5.2.2 which查找可执行文件的路径5.2.3 which的进阶&#xff0c;whereis5.2.…

【Spring】SpringBoot配置文件

文章目录 1. 配置文件格式2. properties 配置⽂件说明2.1 properties 基本语法2.2 读取配置文件2.3 properties 缺点分析 3. yml 配置文件说明3.1 yml 基本语法3.2 读取配置文件3.3 PostConstruct 注解3.4 配置null和空格3.5 value值加单双引号3.6 配置对象3.7 配置集合3.8 配置…

环形链表解析(c语言)c语言版本!自我解析(看了必会)

目录 1.判断一个表是否是环形链表&#xff01; 代码如下 解析如下 2.快指针的步数和慢指针的步数有什么影响&#xff08;无图解析&#xff09; 3.怎么找到环形链表的入环点 代码如下 解析如下 1.判断一个表是否是环形链表&#xff01; 代码如下 bool hasCycle(struct L…

Leetcode—69.x的平方根【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—69.x的平方根 直接法实现代码 int mySqrt(int x) {long long i 0;while(i * i < x) {i;}if(i * i > x) {return i - 1;}return i; }运行结果 二分法实现代码 int mySqrt(int x) {long long left 0, right (l…

自动化测试(Java+eclipse)教程

webdriver环境配置 1.下载chromedriver到本地&#xff08;一定要选择和自己浏览器相对应的版本chromedriver下载地址&#xff09; 2.加入到环境变量path中 webdriver工作原理 创建web自动化测试脚本 1.Maven项目创建 File->New->project->(搜索maven)选择maven pr…

功能案例 -- 通过开关,改变白天和黑夜

效果展示 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>:root {--default-bac-color: #f…

会员题-力扣408-有效单词缩写

有效单词缩写 字符串可以用 缩写 进行表示&#xff0c;缩写 的方法是将任意数量的 不相邻 的子字符串替换为相应子串的长度。例如&#xff0c;字符串 “substitution” 可以缩写为&#xff08;不止这几种方法&#xff09;&#xff1a; “s10n” (“s ubstitutio n”) “sub4…

基于STM32单片机抢答器设计

**单片机设计介绍&#xff0c; 基于STM32单片机抢答器设计-Proteus仿真 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于STM32单片机的抢答器设计可以用于教育和培训场景中的抢答游戏或考试环节。以下是一个基本的介绍设计步骤…

手摸手入门Springboot+Grafana10.2接收JSON

JSON&#xff08;JavaScript Object Notation, JS对象简谱&#xff09;是一种轻量级的数据交换格式。它基于 ECMAScript&#xff08;European Computer Manufacturers Association, 欧洲计算机协会制定的js规范&#xff09;的一个子集&#xff0c;采用完全独立于编程语言的文本…

2013年108计网

第33题 在 OSI 参考模型中, 下列功能需由应用层的相邻层实现的是()A. 对话管理B. 数据格式转换C. 路由选择D. 可靠数据传输 很显然&#xff0c;题目所问的应用层的相邻层是表示层。该层实现与数据表示相关的功能。选项a中的对话管理属于会话层。选项c中的路由选择属于网络层。…

Maven Profile组设置

application.properties中xxxx

统一消息分发中心设计

背景 我们核心业务中订单完成时&#xff0c;需要完成后续的连带业务&#xff0c;扣件库存库存、增加积分、通知商家等。 如下图的架构&#xff1a; 这样设计出来导致我们的核心业务和其他业务耦合&#xff0c;每次新增连带业务或者去掉连带业务都需要修改核心业务。 一方面&…

UPLAOD-LABS2

less7 任务 拿到一个shell服务器 提示 禁止上传所有可以解析的后缀 发现所有可以解析的后缀都被禁了 查看一下源代码 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists($UPLOAD_ADDR)) {$deny_ext array(".php",".php5&quo…