GPU(图形处理单元,Graphics Processing Unit)是一种专门用于加速图形处理和计算的电子电路。最初,GPU主要用于图像渲染和显示,如3D游戏、动画等,但随着技术的进步,GPU的用途已经扩展到许多高性能计算领域。
一)为什么发明GPU?
随着计算机技术的发展,游戏领域开始出现3D游戏。和2D游戏相比,3D游戏能提供更真实的游戏体验,但它带来的一个问题就是,3D游戏的计算量和2D游戏相比大大增加。
于是问题来了:3D游戏加速的重担,究竟是让CPU来扛,还是让显卡来扛?
历史的重任还是交给了显卡,因为显卡本身承担着2D加速的任务,再加一个3D加速的功能可以让游戏玩家玩得更爽,因此,GPU,作为游戏加速的芯片,就加到了显卡中。
然而,上个世纪90年代,做GPU的都是业内赫赫有名的实力派显卡厂商,比如3dfx,Trident,ATI等,Nvidia只是众多不起眼的一个小厂商。当时3dfx推出的高性能3D加速卡Voodoo一度是游戏玩家的首选,并且他们还搞了一个Glide API作为3D加速的软件接口。在当时,3D加速接口除了Glide API,还有跨平台的OpenGL,以及微软自己的Direct3D。
Direct3D在最初很长一段时间都没有OpenGL流行,但Nvidia做了一个简单而重要的决定,即放弃支持其他的3D接口,全力支持微软的Direct3D。随着Direct3D的版本迭代并在游戏中应用越来越广泛,Nvidia的3D显卡逐渐成为市场的头号玩家,并于2000年收购了3dfx的大部分资产。
GPU,实际上诞生于90年代初,但GPU这个名字,直到1999年才由Nvidia为了推广它的GeForce256芯片才正式提出。
二)GPU的主要功能和特点
GPU(图形处理单元)的主要功能和特点包括以下几个方面:
1. 并行计算能力
- 核心数量多:GPU 拥有数千个小型处理核心,可以同时执行大量的并行计算任务。这使得 GPU 非常适合处理具有高并行性的数据集,例如图像、视频处理以及机器学习中的神经网络计算。
- 处理大规模数据:GPU 能够快速处理大规模数据,例如 3D 图形渲染中的像素和顶点数据、视频解码中的帧信息等。
2. 图形渲染
- 3D 渲染:GPU 能够高效处理复杂的 3D 图形渲染任务,如多边形绘制、光影计算、纹理映射等。它负责将 3D 模型转换为可视的 2D 图像,并为图像添加光照、阴影、反射等效果。
- 像素和顶点处理:GPU 可以对图像的每个像素进行操作,并通过顶点着色器进行顶点的几何变换、缩放、旋转等操作,生成三维图形场景。
3. 高效的视频处理
- 视频解码和编码加速:现代 GPU 包含硬件加速的解码器和编码器,可以快速处理高分辨率视频的解码和编码任务。例如,它可以硬件加速 H.264、H.265(HEVC)等常见视频格式的解码。
- 实时视频处理:GPU 能够在游戏、直播或视频编辑软件中,实时处理并输出高质量的图像和视频,确保流畅的视觉效果。
4. 并行数据处理和科学计算
- 高性能计算(HPC):由于 GPU 具有大规模并行处理能力,它被广泛应用于需要高计算性能的科学领域,如气象预测、基因组学、金融建模和物理仿真等。
- 机器学习和深度学习:在人工智能领域,尤其是训练深度学习模型时,GPU 可以显著加快神经网络的训练速度。其并行计算架构使得它可以同时计算数百万个参数,大大提高了处理效率。
5. 节能高效
6. 可编程性
- 着色器编程:现代 GPU 提供了可编程的着色器管线,开发者可以使用着色器语言(如 GLSL、HLSL)来编写自定义的顶点、像素和几何着色器,生成复杂的视觉效果。
- 通用计算(GPGPU):通过 CUDA、OpenCL 等编程框架,开发者可以编写非图形相关的计算任务,利用 GPU 的并行处理能力进行数据处理、加密解密、物理模拟等任务。
7. 实时处理能力
- GPU 能够实时处理大量的数据流,确保在游戏、虚拟现实(VR)、增强现实(AR)等应用中实现流畅的画面表现。这使得它在处理实时任务(如游戏渲染和视频播放)中非常高效。
8. 高带宽显存
- GPU 通常配备高带宽的显存(如 GDDR6 或 HBM),能够以极快的速度访问大数据集,确保复杂图形渲染或数据处理任务能够高效执行。这对于处理高分辨率图像、3D 模型和大规模数据集尤为重要。
9. 支持多显示器和高分辨率输出
- 现代 GPU 支持多个显示器的连接,并能够输出 4K、8K 分辨率等高质量图像。这使得它们在图形设计、游戏和多媒体应用中表现出色。
三)GPU的历史
GPU 的发展历程体现了计算机图形处理技术的进步,以及它如何逐渐扩展到更广泛的高性能计算领域。以下是 GPU 发展的主要历史阶段:
1. 早期阶段(1970s – 1980s)
在计算机发展的早期,图形处理是由 CPU 处理的,性能非常有限。此时,图形显示主要集中在 2D 图像,图形的复杂性也相对较低。最早的图形硬件称为图形加速卡,它们只能处理一些基本的图像绘制任务,如绘制线条和简单的几何图形。
2. 硬件加速的出现(1980s – 1990s)
在 1980 年代和 1990 年代,随着图形用户界面(GUI)的普及和视频游戏的崛起,需求促使图形处理硬件的性能不断提升。3D 图形加速技术开始发展,专用硬件用于加速 3D 图形渲染的任务,如多边形填充和纹理映射。
- 1981年,IBM发布了IBM PC Color Graphics Adapter (CGA),是最早的图形加速器之一,支持基本的图形功能。
- 1996年,3dfx公司发布了Voodoo Graphics显卡,标志着现代 GPU 的早期雏形。Voodoo 能够显著加速 3D 图形的处理,并使得更复杂的游戏图像效果得以实现。
3. GPU 的正式诞生(1999)
1999 年,NVIDIA 发布了首款被称为 GPU 的显卡——GeForce 256。它是世界上第一个真正的图形处理单元,能够集成硬件 T&L(Transform and Lighting,变换和光照),将 3D 图形处理从 CPU 转移到 GPU。这款 GPU 标志着图形处理和计算能力的大幅提升,并且为后来的 GPU 发展奠定了基础。
4. 可编程 GPU 的兴起(2000s)
进入 2000 年代,GPU 的可编程性成为了新一代发展的关键。通过引入可编程的顶点着色器和像素着色器,开发者能够直接控制 GPU 的行为,设计出更复杂的图形效果。
- NVIDIA 和 ATI(后被 AMD 收购)推出了支持可编程着色器的显卡,如 GeForce 3 系列和 Radeon 8500 系列。
- 2006年,NVIDIA 发布了具有统一着色架构的GeForce 8800 GTX,这标志着现代 GPU 可用于更广泛的并行计算任务。
5. 通用计算 GPU(2006 – 至今)
2000 年代后期,GPU 开始被广泛用于通用计算(GPGPU,General-Purpose Computing on Graphics Processing Units),其并行处理能力使其成为机器学习、科学计算等领域的理想选择。
- 2006年,NVIDIA 发布了 CUDA(Compute Unified Device Architecture),这是一个让开发者能够使用 C 语言编写程序在 GPU 上运行的并行计算平台。这使得 GPU 的计算能力得以扩展到科学计算、物理模拟和深度学习等领域。
- AMD 也推出了相应的并行计算平台OpenCL,使得 GPU 的应用进一步多样化。
6. GPU 在人工智能中的爆发性应用(2010s)
在 2010 年代,随着深度学习技术的崛起,GPU 在 AI 和机器学习中的应用进入了新的阶段。由于深度神经网络训练需要大量的并行计算,GPU 成为深度学习训练中最重要的硬件加速器。
- NVIDIA 的 GPU(如 Tesla 和后来推出的 A100 等系列)成为了深度学习领域的标准计算硬件。
- Google、亚马逊和微软等科技公司也开始推出基于 GPU 的云计算服务,以支持机器学习、数据分析和大规模并行计算任务。
7. 现代 GPU 的多样化应用(2020s)
进入 2020 年代,GPU 不仅仅局限于图形处理和游戏领域,其应用范围已经扩展到自动驾驶、虚拟现实(VR)、增强现实(AR)、加密货币挖矿、基因研究等各个方面。
- NVIDIA 和 AMD 继续主导市场,推出了一系列具有更高并行计算性能的 GPU,如 NVIDIA 的 RTX 系列和 AMD 的 RDNA 架构。
- GPU 也在加密货币挖矿中得到了广泛应用,特别是以太坊等数字货币的挖矿,需要大量的 GPU 计算能力。
8. 未来趋势
- AI 专用硬件的兴起:尽管 GPU 仍然是深度学习的核心硬件,但随着 AI 的快速发展,许多公司(如谷歌的 TPU)开始开发专用 AI 加速器,以满足特定任务的需求。
- 量子计算和边缘计算的出现,也可能引发 GPU 应用的新革命。
总体而言,GPU 从最初的图形加速器发展为如今多用途的高性能计算设备,它不仅在推动游戏和图形技术的发展,同时也在人工智能、科学研究、工程计算等领域扮演着重要角色。
四)GPU的应用领域
GPU(图形处理单元)最早是为图形渲染而设计的,但随着其并行计算能力的提升,它的应用领域已经远远超出传统的图形处理。以下是 GPU 的主要应用领域:
1. 图形渲染与游戏
- 3D 游戏开发:GPU 在游戏中用于实时渲染复杂的 3D 场景和图形效果。现代游戏对光影、纹理、物理模拟的需求越来越高,GPU 提供了强大的计算能力来实现这些效果。
- 虚拟现实(VR)和增强现实(AR):GPU 能够处理高分辨率的图形和快速响应用户的头部或手部运动,因此在 VR 和 AR 应用中被广泛使用,保证沉浸式体验的流畅性和即时反馈。
- 动画和影视制作:电影和动画制作中,GPU 用于渲染高质量的图像、视频和特效,显著加快了渲染时间。
2. 人工智能和深度学习
- 深度学习模型训练:GPU 被广泛用于训练人工神经网络,特别是深度学习中的卷积神经网络(CNN)和循环神经网络(RNN)。它们能够加速大规模并行计算,显著缩短模型训练的时间。
- 推理加速:在模型部署时,GPU 还用于加速推理过程,特别是在实时应用中,如自动驾驶汽车、智能家居设备等。
- 大数据分析:GPU 可以并行处理大量数据,使其在大数据处理、数据分析和实时数据流处理领域非常高效。
3. 高性能计算(HPC)和科学计算
- 科学仿真:在科学研究中,GPU 被用于气象预测、宇宙模拟、地震模拟等领域。它们可以同时处理多个计算任务,提高计算效率。
- 分子动力学和基因分析:GPU 也广泛应用于生命科学中的分子动力学模拟、基因组学和蛋白质折叠研究等领域。
- 量子化学与物理仿真:GPU 被用于模拟复杂的化学反应和物理过程,如量子力学计算和流体动力学仿真。
4. 自动驾驶
- 感知系统:自动驾驶汽车需要处理来自摄像头、雷达和激光雷达的数据,GPU 用于处理这些传感器生成的图像和点云数据,以实现物体识别、路径规划等功能。
- 实时决策:在自动驾驶中,GPU 的高并发处理能力能够实时处理和分析大量数据,做出快速反应,确保驾驶安全。
5. 加密货币挖矿
- 加密货币挖矿:GPU 被用于执行加密货币挖矿任务,尤其是在比特币和以太坊等加密货币的早期阶段,由于其强大的并行处理能力,GPU 能够加速挖矿过程中所需的复杂哈希计算。
6. 视频处理与图像处理
- 视频编码和解码:GPU 可以硬件加速视频的编码和解码任务,尤其是在处理 4K、8K 等高分辨率视频时,这大大提高了视频处理效率。常见的视频格式如 H.264、H.265 都能被 GPU 高效处理。
- 实时流媒体处理:在视频流媒体服务(如 Netflix、YouTube)中,GPU 用于实时编码和转码,确保用户能够顺畅观看视频。
- 图像编辑与处理:GPU 用于 Photoshop 等图像处理软件中,加速滤镜应用、图像渲染和其他复杂的图像处理任务。
7. 医疗影像处理
- 医学成像分析:在 CT、MRI 和超声波成像等领域,GPU 用于处理和分析复杂的三维医学图像。这不仅提高了成像质量,还加速了诊断过程。
- 生物医学模拟:GPU 被用于模拟生物体的行为,进行药物开发、疾病研究等生物医学应用。
8. 金融与风险分析
- 高频交易:在金融领域,GPU 用于加速高频交易算法的执行,帮助投资者在极短时间内完成大量交易操作。
- 风险分析与建模:金融机构使用 GPU 来运行复杂的市场风险模型、资产定价模型和风险管理系统,提高计算效率。
9. 云计算与边缘计算
- GPU 云计算:很多云计算平台(如 AWS、Google Cloud、Azure)提供基于 GPU 的计算资源,帮助企业加速 AI 训练、数据处理和渲染任务。
- 边缘计算:在需要快速响应的场景(如智能城市、智能工厂),GPU 能够处理大量实时数据,减少对远程服务器的依赖。
10. 工业设计与CAD
- 计算机辅助设计(CAD):在工业设计、建筑设计和制造业中,GPU 加速了 CAD 软件中的 3D 模型渲染和复杂设计模拟,使设计师可以实时预览设计效果。
- 虚拟仿真:GPU 被用于虚拟产品测试和仿真,如汽车、飞机的风洞实验或结构分析等。
11. 密码学与安全
- 密码学计算:GPU 的强大计算能力也被应用于密码学领域,用于加速加密算法和解密过程。
- 区块链技术:GPU 也用于区块链系统中,帮助处理交易验证和共识算法。
五)特定用途的GPU 清单
根据具体用途,GPU 的性能和特性各不相同。以下是针对不同应用领域常用的 GPU 清单:
1. 游戏与图形渲染
- NVIDIA GeForce RTX 40 系列(如 RTX 4090, RTX 4080):
- 特点:实时光线追踪(RTX)、DLSS(深度学习超采样)、高分辨率渲染、VR 支持。
- 应用:高端 4K 游戏,虚拟现实(VR)体验,图形渲染。
- AMD Radeon RX 7000 系列(如 RX 7900 XT, RX 7900 XTX):
- 特点:支持光线追踪、高性能游戏引擎优化。
- 应用:高性能游戏,3D 图形渲染,VR 应用。
- NVIDIA GeForce GTX 16 系列(如 GTX 1660 Super):
- 特点:适合中端游戏用户,不支持 RTX 实时光线追踪。
- 应用:1080p 高效能游戏,基础图形渲染。
2. 人工智能与深度学习
- NVIDIA A100 Tensor Core GPU:
- NVIDIA Tesla V100:
- 特点:适合机器学习、AI 和高性能计算,支持 CUDA 和 Tensor Cores。
- 应用:神经网络训练、数据科学、HPC 应用。
- AMD Instinct MI100:
- 特点:为数据中心和深度学习设计,支持高性能并行处理。
- 应用:AI 和机器学习任务、高性能计算。
3. 高性能计算(HPC)和科学计算
- NVIDIA A100 Tensor Core GPU:
- 特点:高性能计算专用,支持 HPC 应用中的大规模并行任务和数据分析。
- 应用:气象模拟、基因组学、物理仿真。
- AMD Instinct MI200 系列:
- 特点:支持大规模并行计算,面向科学计算和研究应用。
- 应用:物理模拟、科学研究、工程设计。
- NVIDIA Tesla 系列(如 Tesla T4):
- 特点:适合数据中心的计算任务,具有较低功耗。
- 应用:科学仿真、数据中心任务处理、HPC 应用。
4. 自动驾驶
- NVIDIA DRIVE AGX Pegasus:
- 特点:专为自动驾驶设计,具备感知、路径规划和驾驶决策的计算能力。
- 应用:自动驾驶汽车的 AI 计算平台,自动驾驶系统开发。
- NVIDIA Jetson AGX Orin:
5. 加密货币挖矿
- NVIDIA GeForce RTX 3090:
- 特点:强大的多核并行处理能力,高显存,适合加密货币挖矿。
- 应用:以太坊挖矿等基于 GPU 的加密货币。
- AMD Radeon RX 6800 XT:
- 特点:高效的算力和能耗比,在加密货币挖矿中表现良好。
- 应用:加密货币挖矿,特别是高效的以太坊挖矿。
6. 视频处理与内容创作
- NVIDIA Quadro RTX 6000 / RTX 8000:
- 特点:为专业图形工作站设计,支持高性能视频渲染、图像处理和动画制作。
- 应用:3D 渲染、视频编辑、电影制作、虚拟现实开发。
- AMD Radeon Pro W6800:
- 特点:面向专业内容创作领域,具备高性能图像处理能力。
- 应用:图形设计、影视后期制作、工程可视化。
- NVIDIA GeForce RTX 3080:
- 特点:强大的视频编码能力,支持实时视频编辑和流媒体处理。
- 应用:视频编辑、实时 4K/8K 视频处理、3D 渲染。
7. 医疗影像处理
- NVIDIA Quadro RTX 5000 / RTX 6000:
- 特点:支持医疗成像、实时 3D 模型可视化和分析。
- 应用:医学影像分析、CT/MRI 图像处理。
- AMD Radeon Pro VII:
- 特点:专为高精度的医学成像处理设计,具有高带宽和多显示输出支持。
- 应用:医疗成像、虚拟手术规划。
8. 金融与风险分析
- NVIDIA Tesla V100:
- 特点:强大的并行计算能力,适合复杂金融建模和风险分析。
- 应用:高频交易、金融衍生品定价、风险评估。
- NVIDIA A100:
- 特点:大规模并行处理,适用于实时金融数据处理。
- 应用:金融市场建模、实时交易策略分析。
9. CAD 与工业设计
- NVIDIA Quadro RTX 4000 / RTX 5000:
- 特点:专为工程设计和 CAD 软件优化,支持实时 3D 渲染和模型处理。
- 应用:建筑设计、汽车和航空制造、产品开发。
- AMD Radeon Pro WX 7100:
- 特点:为 CAD 工具优化,提供高效图形渲染和处理能力。
- 应用:工业设计、工程模拟、虚拟产品测试。
10. 云计算与边缘计算
- NVIDIA A100 Tensor Core GPU:
- NVIDIA Jetson Nano / Jetson Xavier NX:
- 特点:为边缘计算设计,低功耗、高性能,支持 AI 处理。
- 应用:物联网设备、智能城市、边缘计算应用。
六)集成显卡的工作原理
集成显卡(Integrated Graphics Processing Unit, iGPU)与独立显卡(Dedicated GPU)不同,它是集成在中央处理器(CPU)或主板上的一部分,不单独存在于一个独立的硬件设备上。其工作原理如下:
1. 与CPU共享资源
- 共享内存:集成显卡没有独立的显存(专门的图形内存),它需要与系统内存(RAM)共享。这意味着集成显卡在处理图形任务时,会占用部分主内存作为显存使用,通常分配大小可以根据系统需要动态调整。
- 共享处理器资源:集成显卡与CPU在同一芯片上,它们可以共享处理器资源进行协同工作。例如,CPU处理计算任务,而集成显卡负责图形处理任务。
2. 图形处理与渲染
- 图形加速:集成显卡通过其内置的图形处理单元来执行基础的图形任务,如2D/3D 渲染、图像缩放、色彩填充等。虽然其并行处理能力比独立显卡弱,但仍能应付日常使用中的基本图形需求。
- 像素和顶点处理:集成显卡可以处理显示器上的每一个像素,将CPU处理好的数据转换成图像信号,并输出到显示器上。它还可以对3D图像中的顶点进行处理,创建基础的3D图形。
3. 硬件加速
- 视频解码加速:集成显卡通常内置专门的视频加速模块,用于硬件加速常见视频格式的解码(如 H.264、H.265),从而减轻CPU的负担,确保高清视频播放的流畅性。
- 显示输出:集成显卡支持显示器的连接和输出,通常支持多个显示器,并且可以处理高分辨率图像的显示。
4. 低功耗设计
- 节能特性:集成显卡的设计目标是低功耗和高效能,适合轻量级应用场景。它不需要像独立显卡那样的专门供电,依赖CPU提供的电源,因此非常适合移动设备(如笔记本电脑)和轻型台式机使用。
- 自动切换:在配有独立显卡的设备中,集成显卡可以作为系统的备用显卡,当系统处于低负荷时会切换到集成显卡,以节省能耗。
5. 与操作系统和应用的交互
总结:
集成显卡通过与CPU共享资源来处理图形任务,它的主要工作原理包括与CPU共享内存、执行图形渲染、进行视频加速以及低功耗设计。虽然性能有限,但它在日常应用中能有效地执行大部分基础的图形任务,并通过硬件加速来优化特定任务的处理。