文章目录
- [一 显卡](#一 显卡)
-
- [1 按核心用途与市场定位划分](#1 按核心用途与市场定位划分)
- [2 按集成方式划分](#2 按集成方式划分)
- [3 按品牌阵营划分(独立显卡市场主导者)](#3 按品牌阵营划分(独立显卡市场主导者))
- [4 根据需求选择](#4 根据需求选择)
- [二 CUDA(Compute Unified Device Architecture)](#二 CUDA(Compute Unified Device Architecture))
-
- [1 关系](#1 关系)
- [2 协同工作](#2 协同工作)
- [3 总结与关键点](#3 总结与关键点)
- [4 总结](#4 总结)
一 显卡
1 按核心用途与市场定位划分
- 消费级显卡
- 定位:面向普通用户、游戏玩家、内容创作者(轻度到中度)
- 核心厂商:
- NVIDIA GeForce系列:如RTX 4090/4080/4070,RTX 4060,RTX 30/20系列等。
- AMD Radeon RX系列:如RX 7900 XTX/XT,RX 7800 XT,RX 7700 XT,RX 7600,RX 6000系列等
- Intel Arc系列:如Arc A770/A750/A580/A380
- 核心特点:
- 高性能游戏渲染:优化DirectX/Vulkan/OpenGL图形API,支持高分辨率、高帧率游戏
- 图形技术:
- 光追(Ray Tracing):NVIDIA RT Core / AMD Ray Accelerators
- 超采样技术: NVIDIA DLSS(AI驱动)/ AMD FSR / Intel XeSS
- 多媒体与创作:支持视频编解码(如NVENC/NVDEC,AMD VCE/VCN),轻度视频剪辑、直播推流
- 专业工作站显卡(专业可视化/设计卡)
- 定位:面向工程师、建筑师
- 影视特效师、3D设计师等专业创作者
- 核心厂商:
- NVIDIA RTX/Quadro系列:如RTX 6000 Ada,RTX 5000/4000,RTX A5000/A4000(Quadro品牌已逐步融入RTX)
- AMD Radeon Pro系列:如W7900/W7800/W7700,W6800/W6600等。
- 核心特点:
- 专业软件认证与优化:针对AutoCAD,Maya,SolidWorks,Revit,DaVinci Resolve等工业软件进行严格测试和驱动优化,确保稳定性和兼容性
- 高精度计算与渲染:支持OpenGL/DiretX专业模式,提供更精准的着色,抗锯齿和视图操作
- 大显存 & ECC纠错:配备大容量显存(最高可达48GB+),部分型号支持ECC显存,防止数据错误
- 多屏输出能力:通常支持4-6个高分辨率显示器同步输出(如4x 4K)
- 价格昂贵
- 数据中心/计算加速卡(AI/HPC显卡)
- 定位:面向人工智能训练与推理、科学计算、大数据分析、云端渲染
- 核心厂商:
- NVIDIA Tesla / Ampere / Hopper系列:如H100,A100,A40,L40S,T4(无视频输出接口)
- AMD Instinct系列:如MI300X,MI250X,MI210等
- Intel GPU Max系列(原Ponte Vecchio):如Max 1550/1100(主打HPC/AI)
- 核心特点:
- 极致并行计算能力:拥有数千至数万核心,专为FP64/FP32/FP16/INT8等计算精度优化
- 高速互连技术:
- NVIDIA NVLink(多卡高速互联,共享显存)
- AMD infinity Fabric
- 支持PCle4.0/5.0
- 大显存 & HBM技术:普遍使用高带宽内存(HBM2e/HBM3),容量巨大(最高可存192GB+)
- 专用计算技术:
- NVIDIA Tensor Core(加速AI矩阵运算)
- AMD Matrix Core / CDNA 架构
- 被动散热 & 服务器形态:多位涡轮散热或被动散热,部署在服务器机架内
- 天价
2 按集成方式划分
- 独立显卡(dGPU - Discrete GPU)
- 形态:独立的板卡(插在PCle插槽上),自带显存(CDDR6/GDDRX/HBM)和散热系统
- 优势:性能强大,可升级,适用于游戏、专业工作和高性能计算
- 代表:上述所有消费级、专业级和数据中心卡为独立显卡
- 集成显卡 / 核芯显卡(iGPU - Integrated GPU)
- 形态:GPU 集成在CPU芯片内部,共享系统主内存作为显存
- 优势:功耗极低、成本为零(无需额外购买)、节省空间
- 性能:仅适合日常办公、网页浏览、视频播放和及轻度游戏(如LOL)
- 电表:
- Intel: UHD Graphics / Iris Xe Graphics(酷睿CPU内置)
- AMD:Radeon Graphics(Ryzen APU 如R5 5600G / R7 5700G内置)
- Apple Silicon:M系列芯片的集成GPU(性能接近入门独显)
- 板载显卡(Onboard GPU)
- 形态:GPU集成在主板芯片组上(现在已经少见,基本被CPU内置的iGPU取代)
- 性能:通常弱于现代CPU的集成显卡
3 按品牌阵营划分(独立显卡市场主导者)
- NVIDIA(英伟达)
- 技术领先(尤其在AI和光追领域),市场占有率最高
- 产品线:GeForce(消费级)、RTX / Quadro(工作站)、Tesla / H100 / A100(数据中心)
- AMD(超威半导体)
- 高性价比策略,开源生态(ROCm计算平台)逐渐完善
- 产品线:Radeon RX(消费级)、Radeon Pro(工作站)、Instinct(数据中心)
- Intel(英伟达)
- 独立显卡市场新玩家(Arc系列),主打性价比和AI视频处理(XeSS / AV1 编码强)
- 产品线:Arc A系列(消费级)、Intel Flex / Data Center GPU Max (数据中心)
4 根据需求选择
- 玩游戏 / 日常娱乐 -> 消费级显卡(GeForce / Radeon RX / Arc)
- 专业3D设计 / CAD / 视频后期 -> 专业共走站显卡(RTX / Quadro / Radeon Pro)
- AI训练 / 深度学习 / 科学计算 -> 数据中心加速卡(NVIDIA H100/A100 / AMD Instinct)
- 办公 / 上网 / 轻度影音 -> CPU内置集成显卡(无需额外购买)
二 CUDA(Compute Unified Device Architecture)
CUDA是NVIDIA为其图像处理器(GPU)开发的并行计算平台和编程模型,它与显卡的关系密不可分、相互成就。
1 关系
- CUDA 是NVIDIA GPU 量身定制的:
- CUDA 的核心目标是解锁NVIDIA GPU强大的并行计算能力,使其不再局限于图形渲染,而成为通用的计算处理器(GPGPU)
- CUDA 的架构设计、指令集、内存模型等都紧密贴合NVIDIA GPU的硬件架构(如流多处理器SM、CUDA核心、Tensor Core、RT Core、内存层次结构等)
- 只能在NVIDIA GPU上运行,CUDA程序无法直接在AMD或Intel的GPU上运行(它们有自己的平台如ROCm、oneAPI)
- NVIDIA GPU是CUDA运行的物理基础
- GPU提供了执行CUDA程序所需的海量并行计算核心(CUDA Cores)、高速内存(显存/Global Memory)、专用缓存(Shared Memory,L1/L2 Cache )以及高带宽互连
- GPU的硬件特性(如SIMT执行模型、硬件线程调度、细粒度并行)是CUDA编程模型能够高效工作的前提
2 协同工作
- 硬件架构映射:
- CUDA Core:是NVIDIA GPU中最基本的处理单元,执行浮点和整数运算指令。CUDA编程模型中的线程最终会映射到这些物理核心上执行
- String Multiprocessor:GPU的核心计算单元。每个SM包含多个CUDA Core、寄存器文件、共享内存、纹理/常量内存缓存、指令调度器等。CUDA中的线程快会被调度到某个SM上执行,并独占SM内的资源(如共享内存、寄存器)
- 内存层次:
- 寄存器:最快,每个线程私有。在CUDA内核中声明的自动给变量通常存储在寄存器中。
- 共享内存:位于SM内部,速度极快,由同一个线程快内的所有线程共享,用于线程间高效通信和协作
- L1缓存 / Shared Memory:与共享内存共享物理空间,可配置比例
- L2缓存:所有SM共享,用于缓存对全局内存的访问
- 全局内存:CPU的主内存(显存),容量大但延迟高带宽高。所有线程(跨网格)都可以访问,但需要优化访问模式(合并访问)
- 常量内存:只读,有专用缓存,适合存储所有线程都读取的常量数据
- 纹理内存:最初为图形设计,提供特殊寻址模式和硬件滤波,也可用于通用计算,有缓存
- 互连:高速的NVLink或PCle总线用于连接GPU与CPU内存以及其他GPU
- CUDA软件栈
- CUDA工具包:包含编译器nvcc、调试器、性能分析器、数学库等开发工具
- CUDA运行时API:提供管理设备、内存、执行内核等核心功能的函数库(如cudaMalloc、cudaMemcpy,<<<>>>内核启动语法)
- CUDA驱动API:更底层、更灵活的接口,运行时API构建在其之上
- CUDA库:高度优化的库,如cuBLAS(线性代数)、cuFFT(快速傅里叶变换)、cuDNN(深度学习)、Thrust(并行算法模板库)等
- 编程语言扩展:主要基于C/C++,通过函数修饰符(global ,device ,host)和内置变量(threadIdx,blockIdx等)扩展语法
- 执行模型
- 内核:在GPU上并行执行的函数,用__global__修饰
- 线程层次:
- 线程:最基本的执行单元
- 线程块:一组协作线程。共享同一块共享内存,可以同步。被调度到一个SM上执行
- 网格:由多个线程块组成,一个内核启动对应一个网络
- SIMT:单指令多线程。一个SM在同一时刻将一条指令广播给一组线程(通常是32个线程,称为一个Warp)执行。虽然一条指令控制一组线程,但每个线程都有自己的指令计数器、寄存器状态,并能独立执行分支路径(尽管分支发散会降低效率)
- 开发流程:
-
- 在主机端(CPU)分配和初始化数据
-
- 使用cudaMalloc在设备端(GPU)分配显存
-
- 使用cudaMemcpy将数据从主机内存复制到设备显存
-
- 使用<<<grid,block>>>语法配置并启动CUDA内核(在GPU上执行)
-
- 内核中的代码由成千上万个线程并行执行,处理设备显存中的数据
-
- 使用cudaMemcpy将结果设备显存复制回主机内存
-
- 释放设备端和主机端的内存
3 总结与关键点
- CUDA是桥梁:它架起了程序员与NVIDIA GPU强大并行计算能力之间的桥梁。没有CUDA(或其他类似平台),GPU的通用计算能力难以被高效、便捷地利用
- NVIDIA GPU基石:CUDA的所有功能和性能都依赖于底层NVIDIA GPU的硬件架构和支持。显卡的性能指标(核心数量、频率、显存带宽、架构特性)直接决定了CUDA程序能够多块
- 软硬件协同优化:CUDA的成功在于其编程模型于NVIDIA GPU硬件架构的深度协同设计。理解硬件特性(如内存层次、Wrap执行)对于编写高性能CUDA代码至关重要
- 生态系统:CUDA不仅是一个编程模型,更是一个庞大的生态系统(工具、库、文档、社区),极大地推动了GPU在高性能计算、人工智能、科学计算等领域的普及应用
4 总结
- CUDA在NVIDIA提供的一套软件工具和编程接口,专门用于在其生产的显卡(GPU)上进行通用并行计算。
- 没有NVIDIA显卡,CUDA无法运行;没有CUDA(或类似平台),NVIDIA显卡的通用计算能力难以被有效利用。它们是共生共荣的关系
如若存在错误的表述,欢迎指正