gpu硬件架构

news2024/12/15 12:07:39

1.简介

在这里插入图片描述

NVIDIA在视觉计算和人工智能(AI)领域处于领先地位;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论,但很难掌握各种组件的清晰完整的图景。

这些GPU的高性能源于其许多组件的无缝集成,每个组件在提供顶级结果方面都发挥着至关重要的作用。
本篇文章将对NVIDIA GPU的每个组件进行详细的介绍,从架构和图形处理集群(GPC)到单个核心。另外还有确保高效数据访问的复杂内存层次结构。

2.nvidia GPU架构

A100 GPU

2.1 GPC (Graphics Processing Cluster)

GPCs代表了GPU的高层组织结构
它们对在整个芯片上进行分发工作负载和管理资源起着至关重要的作用。每个GPC可以独立工作并有独立的TPCs(Texture Processing Clusters), SMs(Streaming Multiprocessors), 和共享资源,从而可以高效地进行工作分配和资源管理。

在这里插入图片描述

2.2 TPC (Texture Processing Clusters)

TPC负责执行核心绘图功能相关的构成我们在屏幕上看到的视觉体验的工作负载。他们处理以下任务:

  • 顶点着色:变换三维顶点
  • 将坐标转换为2D屏幕坐标。
  • 纹理映射:将纹理(图像)应用于3D模型。
  • 光栅化:将多边形转换为像素进行显示。

每个TPC都包含多个SM,它们是GPU的主力,并行执行这些任务。它们还包含以下内容:
在这里插入图片描述

纹理单元(TMU)

这些单元处理与纹理映射相关的任务,例如从内存中获取纹理数据、过滤以及将纹理应用于像素或顶点。它们确保纹理正确映射到3D模型上,以创建详细逼真的图像。

L1缓存

一种存储频繁访问的纹理数据和指令的小型快速内存缓存。这有助于减少延迟并提高纹理处理操作的效率。

共享内存

TPC使用共享内存来实现集群内纹理单元和SM之间的高效数据共享。这种共享内存对于高性能纹理映射和过滤操作非常重要。

特殊功能单元(SFU)

TPC中的SFU专门针对纹理映射和渲染操作进行了优化。它们处理复杂的数学函数,但更侧重于纹理处理所需的任务。

光栅引擎

光栅引擎将矢量图形(如3D模型)转换为光栅图像(像素)。它在渲染的最后阶段起着至关重要的作用,决定了如何将纹理应用于屏幕上的单个像素。

在这里插入图片描述

纹理缓存

这些缓存将纹理数据存储在纹理单元附近,以尽量减少从主存储器获取这些数据所需的时间。它们通过减少内存访问延迟来帮助加快纹理映射过程

2.3 流式多处理器(SM)

SM是GPU中的基本处理单元
GPU中SM的数量是决定其整体性能的关键因素。例如,RTX A5000是一款通用GPU,有64个SM,而针对深度学习进行优化的NVIDIA H100有168个SM。以下是其组件的详细分解:

  • 指令缓存(I-Cache):存储SM要执行的指令,通过将频繁使用的指令保持在执行单元附近,实现快速访问并减少延迟。
  • 多线程问题(MT问题):处理向SM内的各个执行单元分派指令。它同时管理多个线程,优化可用计算资源的使用。
  • 常量缓存(C-Cache):此缓存存储在执行过程中不会改变的常量数据。它允许线程快速访问这些常数值。
    在这里插入图片描述
  • 流处理器/CUDA核心(SP):SP,也称为CUDA核心,是SM中负责执行大部分算术运算(例如浮点和整数运算)的核心。多个SP单元支持指令的并行处理。
  • 特殊功能单元(SFU):SM还具有SFU,可以处理更复杂的数学函数,如三角计算、指数和其他比标准算术运算计算量更大的特殊函数。
  • 双精度单位(DP):这些单位处理双精度浮点运算,这对于需要高数值精度的应用程序(如科学计算和模拟)至关重要。
  • 共享内存:与TPC一样,SM也使用共享内存,这是一种可由SM内所有线程访问的快速片上内存。它允许线程之间高效的数据共享和协调,显著加快了需要频繁数据交换的计算速度。

现代GPU中的SM通常包含额外的内核和专用单元,其中可能包括:

  • L1缓存:一种小型、快速的内存缓存,在SM内核附近存储频繁访问的数据和指令,以减少访问时间。
  • 寄存器:每个SM内的高速存储位置专用于存储活动线程的临时数据,允许在计算过程中快速访问。
  • Tensor核心:专门用于深度学习和人工智能任务,执行神经网络训练和推理所必需的矩阵运算​​.
  • 光线跟踪核心(RT核心):专门用于处理光线跟踪计算,提供真实照明、阴影和反射的实时渲染。

GPU中的每个SM都集成了这些组件,以高效地执行各种并行处理任务,平衡通用计算与图形、人工智能和其他要求苛刻的工作负载的专门处理。
在接下来的部分中,我们将深入探讨SM的各个组件,探索CUDA内核、RT内核、Tensor内核和共享内存如何协同工作,以提供NVIDIA GPU所闻名的令人印象深刻的性能。

3. cuda core

NVIDIA GPU从多个CUDA内核中获得卓越的计算能力。这些内核是GPU上并行处理的构建块,使它们能够擅长需要大量计算吞吐量的任务。
以下是典型CUDA Core中关键组件的细分:

算术逻辑单元(ALU):

  • 整数单位:对整数数据类型执行整数算术运算(加法、减法、乘法、除法)。
  • 浮点单元(FPU):对浮点数据类型(例如单精度FP32和半精度FP16)执行浮点算术运算(加法、减法、乘法、除法)

寄存器文件:

  • 寄存器:CUDA核心中的一小部分高速存储位置,用于保存操作数(输入数据)和计算结果。这些寄存器对于在计算过程中快速访问数据至关重要。

指令解码器:

  • 解码指令:接收传入的机器代码指令,并将其解码为ALU可以执行的微操作。

控制逻辑:

  • 控制执行:通过CUDA核心管理指令和数据流,确保操作按正确的顺序执行,并正确存储结果。

装载/储存单位:

  • 内存访问:处理将数据从内存加载到寄存器并将结果存储回内存。该单元负责与GPU的内存层次结构(共享内存、L1缓存、全局内存)进行交互。

在这里插入图片描述

附加组件(可选):

  • 特殊功能单元(SFU):一些CUDA内核可能有一个专用的SFU,用于加速特定的数学函数,如正弦、余弦、指数、倒数等。
  • 分支单元:处理条件分支指令,允许CUDA Core根据比较结果采取不同的执行路径。

3.1 cuda core工作原理

GPU上的基本执行单元是线程。流式多处理器(SM)中的每个CUDA核心一次可以执行一个线程。线程被组织成32个一组的组,称为warp,它们在SM上同时调度和执行。
线程也可以被分组为称为块的较大单元,这使得线程之间能够进行协作和数据共享。一个块被分配给一个SM,该块内的线程共享SM上的资源,包括寄存器和共享内存。如果一个块的线程数多于SM的CUDA核心,则线程将被划分为warp,并在CUDA核心可用时计划执行warp。

CUDA内核在单指令多线程(SIMT)架构下运行,这意味着warp中的所有32个线程都执行相同的指令,并行但在不同的数据元素上。这最大限度地提高了单指令多数据(SIMD)并行性,即单个指令同时对多个数据点进行操作,从而可以高效处理大型工作负载。

GPC中的GPU调度器负责将warp分配给可用的SM以供执行。当warp遇到长延迟操作(如内存访问)时,调度器可以切换到另一个准备执行的warp,防止延迟并最大限度地提高吞吐量
这种动态调度确保了GPU的资源得到有效利用,即使在处理具有不同执行时间的任务时也是如此。

GPU中CUDA核心的数量可以从数百个到数千个不等,具体取决于GPU型号及其预期应用场景。除了标准CUDA内核外,现代NVIDIA GPU还具有专为特定任务设计的专用核心。让我们深入探讨这些专用核心及其在增强GPU功能方面的作用。

4.用于光线追踪和人工智能的专用内核

虽然CUDA核心构成了GPU处理的支柱,但现代NVIDIA GPU已经发展到包括旨在加速特定工作负载的专用核心。这些专门的核心,即RT核心和Tensor核心,彻底改变了实时光线追踪和人工智能应用,突破了图形和计算的极限。
首先,我们将讨论RT核心。

4.1 RT cores

4.2 Tensor cores

NVIDIA的Tensor Core是专门用于加速深度学习操作的处理单元。它们被优化用于执行矩阵乘法和卷积,这是深度神经网络的基本构建块。Tensor Core可以使用单精度和半精度浮点数的组合以混合精度执行这些操作,从而在不牺牲精度的情况下显著提高吞吐量。

在这里插入图片描述
下面介绍tensor core的组件:

  • 矩阵乘法累加(MMA)单位:这些是张量核心中的核心计算单位。每个MMA单元可以在单个时钟周期内执行4x4矩阵乘法累加操作。多个MMA单元并行工作,以加速大型矩阵操作。
  • warp调度器:这些单元调度和管理Tensor核心上warp(线程组)的执行。它们确保MMA单元保持忙碌,并优化数据流以实现高效计算
  • 寄存器和共享内存:Tensor核心可以访问高速寄存器和共享存储器,用于存储warp内线程之间共享的中间结果和数据。
  • 混合精度支持:Tensor Core支持混合精度计算,这意味着它们可以使用不同的数值格式(例如FP16、FP32、INT8、INT4)进行计算。这种灵活性平衡了计算速度和准确性,因为深度学习模型通常不需要对所有操作都有极高的精度要求。

在这里插入图片描述

专用单元(可选):新一代Tensor核心可能包括其他专用单元,例如:
  • 稀疏引擎:这些单元加速了对具有许多零元素的稀疏矩阵的操作。
  • Transformer引擎:这些单元经过优化,可以加速基于Transformer的模型中的注意力机制,这些模型通常用于自然语言处理。

让我们一步一步地分解Tensor Core的工作方式,突出它们在加速深度学习和人工智能基础的矩阵运算方面的作用:

1.输入数据准备:
  • 数据加载:输入数据通常以矩阵形式(例如,表示图像、文本或其他数字特征)加载到GPU的内存中。
  • 数据转换(可选):如果输入数据采用更高精度的格式,如FP32(32位浮点),则可能会转换为较低精度的格式(如FP16(16位浮点)),以使用Tensor Core的混合精度功能。这一步是可选的,取决于特定的深度学习框架和模型。
2.矩阵运算调度:
  • 操作识别:深度学习框架识别需要执行的矩阵乘法和累加(MMA)操作。
  • 任务调度:该框架在可用的Tensor核心上调度这些MMA操作。
3. Tensor核心操作:
  • 数据提取:Tensor核心从GPU的内存中提取相关的数据元素(矩阵值)。
  • 矩阵乘法:每个Tensor Core对提取的数据执行4x4矩阵乘法运算。这意味着它将两个4x4矩阵相乘,得到一个4x4结果矩阵。
  • 累加:张量核累加多个4x4矩阵乘法的结果,以计算更大矩阵乘法运算的最终结果。
  • 输出:MMA操作的结果被存储回GPU的内存中。

在这里插入图片描述

4.混合精密处理(可选):

这一步不会发生在所有GPU和AI模型上,但如果发生了,它的工作原理如下:

  • FP16累加:如果输入数据被转换为FP16,则结果的累加通常在FP16中完成,以实现更快的计算。
  • FP32转换:在FP16中累积后,如果深度学习模型需要,最终结果可以转换回FP32以获得更高的精度。
5.迭代和完成:
  • 重复执行:对所有预定的MMA操作重复步骤3和4,直到整个深度学习计算完成。

Tensor Core已成为加速深度学习研究和开发的重要工具。它们实现了更大、更复杂的训练模型,在各个领域取得了突破。
例如,在自然语言处理中,Tensor Core为GPT-3等大型语言模型的开发提供了动力,GPT-3可以生成类人文本、翻译语言,甚至编写代码。
NVIDIA GPU中RT核心和Tensor核心的结合开创了加速计算的新时代,实现了实时光线追踪和更快的AI训练和推理。

5. 内存架构与管理

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud集成sleuth和zipkin实现微服务链路追踪

文章目录 前言技术积累spring cloud sleuth介绍zipkin介绍Zipkin与Sleuth的协作 SpringCloud多模块搭建Zipkin Server部署docker pull 镜像启动zipkin server SpringCloud 接入 Sleuth 与 Zipkinpom引入依赖 (springboot2.6)appilication.yml配置修改增加测试链路代码 调用微服…

OBS + SRS:打造专业级直播环境的入门指南

OBS SRS:打造专业级直播环境的入门指南 1. OBS简介2. OBS核心功能详解2.1 场景(Scenes)管理2.2 源(Sources)控制2.3 混音器功能2.4 滤镜与特效2.5 直播控制面板 3. OBS推流到SRS服务器配置指南3.1 环境准备3.2 OBS推流…

Ubuntu K8s

https://serious-lose.notion.site/Ubuntu-K8s-d8d6a978ad784c1baa2fc8c531fbce68?pvs74 2 核 2G Ubuntu 20.4 IP 172.24.53.10 kubeadmkubeletkubectl版本1.23.01.23.01.23.0 kubeadm、kubelet 和 kubectl 是 Kubernetes 生态系统中的三个重要组件 kubeadm: 主…

前端(六)浮动流

浮动流 文章目录 浮动流一、标准流二、浮动流 一、标准流 所谓网页布局就是网页排版的方式,css中有三种网页布局的方式:标准流、浮动流和定位流。 标准流也称文档流,这是浏览器默认的排版方式。标准流中网页的元素会按从左往右、从上往下的…

双内核架构 Xenomai 4 安装教程

Xenomai 4是一种双内核架构, 继承了Xenomai系列的特点,通过在Linux内核中嵌入一个辅助核心(companion core),来提供实时能力。这个辅助核心专门处理那些需要极低且有界响应时间的任务。 本文将在官网教程(https://evlproject.org/…

【安全研究】某黑产网站后台滲透与逆向分析

文章目录 x01. 前言x02. 分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与…

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片编写JS代码编写wxml代码编写wxss代码 GET请求测试编写测试代码域名不合法问题 GET和POST请求测试编写JS代码编写wxml代码编写wxss代码 效果展示 微信小程序字符串 字符串模板 这是ES6引入的特性,允许你通过…

6.2 Postman接口收发包

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 接口收发包的类比1.1 获取对方地址(填写接口URL)1.2 选择快递公司(设置HTTP方法)1.3 填写快递单(设置请求头域&#…

数据链路层(Java)(MAC与IP的区别)

以太网协议: "以太⽹" 不是⼀种具体的⽹络, ⽽是⼀种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物理 层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等; 例如以太⽹中的⽹线必须使⽤双绞线; 传输速率有10M, 100M, 1000M等; 以太…

SpringBoot2+Vue2开发工作管理系统

项目介绍 在工作中使用的管理系统,可以随手记录一些笔记、可以汇总一些常用网站的链接、可以管理自己负责的项目、可以记录每日日报和查看历史日报、可以记录加班情况、可以记录报销内容、可以编写文章文档。 系统功能 我的笔记快捷入口项目管理今日日报我的日报…

软考中级-软件设计师通过心路经验分享

执念,第四次终于通过了 没买书,下班后每天2小时,四个2个月终于过了 学习经验: 1.下班后学习真的靠毅力,和上学的时候考证不是一个状态,大家要及时调整,否则过程很痛苦 2.失败三次的经验&#xf…

burp(2)利用java安装burpsuite

BurpSuite安装 burpsuite 2024.10专业版,已经内置java环境,可以直接使用, 支持Windows linux macOS!!! 内置jre环境,无需安装java即可使用!!! bp2024.10下载…

el-table 动态计算合并行

原始表格及代码 <el-table:data"tableData"class"myTable"header-row-class-name"tableHead" ><el-table-column prop"date" label"日期"> </el-table-column><el-table-column prop"name" …

【Tomcat】第二站:Tomcat通过反射机制运行项目

目录 前言 1. 动态资源&静态资源 1.1 为什么要区分&#xff1f; 1.2 静态资源 1.3 动态资源 1.4 如何判断 2. Tomcat优先动态 2.1 原因 3. Tomcat运行项目的流程 前言 我们在写项目时&#xff0c;在进行前后端交互时&#xff0c;都会创建一个servlet&#xff0c;然…

vue canvas 绘制选定区域 矩形框

客户那边文档相当的多&#xff0c;目前需要协助其将文档转为数据写入数据库&#xff0c;并与其他系统进行数据共享及建设&#xff0c;所以不得不搞一个识别的功能&#xff0c;用户上传PDF文档后&#xff0c;对于关键信息点进行识别入库&#xff01; 以下为核心代码&#xff0c…

[Pro Git#3] 远程仓库 | ssh key | .gitignore配置

目录 1. 分布式版本控制系统的概念 2. 实际使用中的“中央服务器” 3. 远程仓库的理解 4. 新建远程仓库 5. 克隆远程仓库 6. 设置SSH Key 实验 一、多用户协作与公钥管理 二、克隆后的本地与远程分支对应 三、向远程仓库推送 四、拉取远程仓库更新 五、配置Git忽略…

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用&#xff08;一&#xff09;精准定位元素&#xff08;二&#xff09;应对动态网页&#xff08;三&#xff09;数据结构化提取 二、Xpath 的常用方法&#xff08;一&#xff09;节点选取&#xff08;二&#xff09;谓词筛选&#xff0…

Spark执行计划解析后是如何触发执行的?

在前一篇Spark SQL 执行计划解析源码分析中&#xff0c;笔者分析了Spark SQL 执行计划的解析&#xff0c;很多文章甚至Spark相关的书籍在讲完执行计划解析之后就开始进入讲解Stage切分和调度Task执行&#xff0c;每个概念之间没有强烈的关联&#xff0c;因此这中间总感觉少了点…

java抽奖系统登录下(四)

6.4 关于登录 最简单的登录&#xff1a; 1、web登录页填写登录信息&#xff0c;前端发送登录信息到后端&#xff1b; 2、后端接受登录信息&#xff0c;并校验。校验成功&#xff0c;返回成功结果。 这种登录会出现一个问题&#xff0c;用户1成功登录之后&#xff0c;获取到后台…

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板&#xff08;米尔基于全志T527开发板&#xff09;的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…