【硬件知识】从零开始认识GPU

2024-09-03 02:20

本文主要是介绍【硬件知识】从零开始认识GPU,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【硬件知识】从零开始认识GPU

  • 一、GPU的发展史简介
  • 二、GPU主要构成
  • 三、GPU与AI的关系

一、GPU的发展史简介

GPU(图形处理器)的发展史是一段充满创新与变革的历程,它不仅改变了计算机图形显示的方式,还推动了高性能计算、人工智能等多个领域的发展。以下是GPU发展史的概述及其中的一些趣闻。

GPU发展史

  1. 早期发展阶段
    起源:GPU的起源可以追溯到早期的图形显示控制器,如IBM在1981年发布的IBM 5150个人电脑中的黑白显示适配器和彩色图形适配器。这些设备虽然简单,但为后续的图形处理器发展奠定了基础。
    2D图形加速:1991年,S3 Graphics推出的“S3 86C911”标志着2D图形硬件加速时代的到来,它能够进行字符、基本2D图元和矩形的绘制。
    3D图形加速:1994年,3DLabs发布的Glint300SX是第一颗用于PC的3D图形加速芯片,它支持高氏着色、深度缓冲、抗锯齿等特性,开启了显卡的3D加速时代。然而,这个阶段的显卡大多没有执行统一的标准,加速功能也不尽相同。
  2. GPU概念的提出
    GeForce 256:1999年,NVIDIA公司在发布其标志性产品GeForce 256时,首次提出了GPU的**概念。**这款GPU整合了硬件变换和光照(T&L)、立方环境材质贴图和顶点混合等特性,极大减轻了CPU的负担,标志着GPU时代的正式到来。
  3. 统一渲染架构的兴起
    DirectX 8与Shader Model:2001年微软发布DirectX 8,提出了渲染单元模式(Shader Model)的概念,引入了顶点着色器(Vertex Shader)和像素着色器(Pixel Shader),标志着固定管线架构的终结和可编程渲染架构的开始。
  4. 统一渲染架构:随着DirectX 10的推出,shader不再扮演固定的角色,每一个shader都可以处理顶点和像素,这就是统一渲染着色器(Unified Shader)。第一款采用统一渲染架构的桌面GPU是NVIDIA在2006年发布的GeForce 8800 GTX(核心代号G80),它极大提高了GPU的利用率和性能。
  5. GPU的广泛应用与架构创新
    CUDA架构2006年NVIDIA发布了首个通用GPU计算架构Tesla,它采用全新的CUDA架构,支持使用C语言进行GPU编程,使GPU从专用图形处理器转变为通用数据并行处理器。
    架构演进:随后,NVIDIA推出了Fermi、Kepler、Maxwell、Pascal、Volta、Turing和Ampere等GPU架构,不断增强GPU的计算能力和程序性,推动GPU在图形渲染、人工智能和高性能计算等领域的应用。
  6. 趣闻
    像素窃取攻击:在GPU的发展过程中,也出现了一些有趣的安全挑战。例如,研究人员发现了一种称为“像素窃取”的攻击方法,通过在恶意网站嵌入iframe标签,利用GPU的数据压缩方法跨域获取敏感数据,如用户名和密码。这一发现揭示了GPU在安全领域的新挑战。
    GPU在抗疫中的应用:在2020年的新冠肺炎疫情中,GPU集群为超级计算机提供了强大的计算能力,加速了病毒研究和新药筛选的过程。例如,美国橡树岭国家实验室的研究人员利用IBM的Summit超级计算机(搭载了多个NVIDIA Volta V100 GPU)筛选出了77种可能与蛋白质结合并阻止病毒发挥作用的化合物。

GPU的发展史是一部充满创新与挑战的史诗,它不仅改变了我们的视觉体验,还推动了多个领域的技术进步。随着技术的不断发展,我们可以期待GPU在未来继续发挥更大的作用。

二、GPU主要构成

GPU(Graphics Processing Unit,图形处理单元)的内部结构相对复杂,但主要可以归纳为几个关键组成部分。以下是对GPU内部结构的一个详细概述:

  • 流式多处理器(Streaming Multiprocessors, SMs)
    核心组件GPU的核心计算单元是流式多处理器(SMs),它们负责执行并行计算任务每个SM包含多个CUDA核心(或称为流处理器,SPs),以及控制模块、寄存器、缓存和指令流水线等部件
    并行能力:每个SM都能支持数百个线程并发执行,这些线程被组织成线程束(Warp)线程块(Block),以实现高效的并行处理。
    计算能力:随着技术的发展,SM的计算能力不断提升,包括支持更复杂的指令集和更高的浮点运算性能。

  • 层级存储结构
    全局内存(Global Memory):类似于CPU的内存,容量大但访问速度相对较慢。GPU和CPU都可以访问全局内存,但GPU通常具有独立的显存来存储全局内存数据。
    L2缓存(L2 Cache):位于GPU芯片内部,用于缓存从全局内存读取的数据,以减少对全局内存的访问延迟。
    L1缓存/共享内存(L1 Cache/Shared Memory):通常位于SM内部,存取速度比全局内存快,用于存储线程间共享的数据或临时计算结果。
    寄存器(Registers):每个线程都有自己的寄存器组,用于存储操作数和中间结果,存取速度最快。

  • 其他关键组件
    特殊函数单元(Special Function Units, SFUs):执行特殊数学运算,如幂函数、对数函数、三角函数等。
    加载/存储单元(Load/Store Units, LD/ST Units):辅助线程从全局内存、共享内存或寄存器中加载或存储数据。
    纹理读取单元(Texture Units)和纹理缓存(Texture Cache):用于加速图形渲染中的纹理数据访问。

  • 内部连接网络(Interconnect Network)
    GPU内部各组件之间通过复杂的连接网络进行通信和数据传输,确保高效的并行计算和数据访问。

  • GPU RTX 4080结构图
    在这里插入图片描述

    • 供电模块:负责给GPU供电,保证有足够的电量驱动GPU正常工作
      在这里插入图片描述

    • 全局显存
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • GPU核心

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • 其他模块,如1v8控制器、ARGB神光同步模块、STRIX功能单片机等

    • PCIe4.0接口:负责数据快速传输
      在这里插入图片描述

三、GPU与AI的关系

AI与GPU之间存在密切的关系,这主要源于GPU在并行计算方面的卓越性能,这恰好满足了AI大模型在处理海量数据和进行复杂计算时的需求。以下详细解释为何AI与GPU有关系:

  1. GPU的并行计算能力
    核心数量:GPU拥有成百上千的处理核心,这使得它能够同时执行多重计算任务。相比之下,CPU的核心数量较少,通常不超过100个。
    计算效率:GPU的并行计算能力使得它在处理大规模数据和复杂计算任务时表现出色,尤其适合进行大量的矩阵运算和张量操作,这是AI模型训练和推理过程中的关键计算任务。
  2. GPU在AI中的应用
    深度学习模型训练:AI大模型,如深度学习神经网络,需要进行大量的矩阵运算和数据处理。GPU通过其强大的并行计算能力,能够显著加速这些计算过程,从而缩短模型训练时间,提高训练效率。
    推理加速:在模型推理阶段,GPU同样能够提供高效的计算能力,使得AI模型能够更快地处理输入数据并给出结果。
  3. GPU与AI的协同发展
    硬件升级:随着AI技术的不断发展,对计算能力的需求也在不断增加。为了满足这些需求,GPU的性能也在不断提升,新的GPU产品不断涌现,为AI大模型提供了更加强大的计算支持。
    软件优化:主流的深度学习框架,如TensorFlowPyTorch,都进行了针对GPU的优化,以确保深度学习模型能够在GPU上高效运行。这些优化包括针对GPU架构的特定指令集、内存管理和数据流优化等。
  4. GPU与CPU的区别
    任务类型:CPU更适合处理日常的单线程任务,如操作系统管理、文件处理等。而GPU则更适合处理并行计算任务,如图像处理、视频渲染和AI计算等。
    计算模式:CPU通常采用串行计算模式,即按照指令顺序逐一执行。而GPU则采用并行计算模式,能够同时处理多个计算任务。

GPU以其强大的并行计算能力成为AI大模型实现高效计算的重要工具之一。AI与GPU之间的紧密联系不仅推动了AI技术的快速发展,也促进了GPU技术的不断创新和升级。

这篇关于【硬件知识】从零开始认识GPU的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131751

相关文章

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har