GPU基础汇总
1.GPU简介
1.1.什么是GPU
GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。一个专门的图形核心处理器。GPU是显示卡的“大脑”,决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。可以形象的理解为90%的ALU(运算单元),5%的Control(控制单元)、5%的Cache(缓存单元)GPU的设计原理——总结为大量的简单运算

2.GPU规格
GPU相关的规格参数查询https://www.techpowerup.com/gpu-specs/
消费卡相关的规格参数查询https://www.mydrivers.com/zhuanti/tianti/gpu/index_nvidia.html
2.1GPU分为消费级专业级企业级
消费级GPU:这类GPU主要用于个人电脑、游戏机等设备,专注于提供高质量的图形渲染能力,以满足游戏和多媒体应用的需求。NVIDIA的GeForce系列和AMD的Radeon系列是典型的消费级GPU。如:
RTX 40 系列
RTX 4090
RTX 4080
RTX 4070 Ti/4070
RTX 4060 Ti/4060
RTX 30 系列
RTX 3090 Ti/3090
RTX 3080 Ti/3080
RTX 3070 Ti/3070
RTX 3060 Ti/3060
RTX 3050
RTX 20 系列
GTX 16 系列
专业级GPU:专业级GPU通常用于专业图形工作站和高端设计领域,如建筑可视化、电影特效制作等。这类GPU提供更高的渲染精度和专业特性,如NVIDIA的Quadro系列。如:
NVIDIA RTX 6000
Ada Generation
NVIDIA RTX A6000
NVIDIA RTX A5500
NVIDIA RTX A5000
NVIDIA RTX A4500
NVIDIA RTX A4000
NVIDIA RTX A2000
NVIDIA RTX A2000 12GB
NVIDIA T1000
NVIDIA T1000 8GB
NVIDIA T400 4GB
Quadro GV100
企业级/计算级GPU:这类GPU专注于并行计算任务,广泛应用于数据中心和科研计算领域。它们通常具备更多的计算核心和优化的架构,以提高计算效率。NVIDIA的Tesla和AI系列,以及AMD的MI系列是计算级GPU的例子。
H100
H800
A100
A2
A10
A16
A30
L40
V100
2.2GPU服务器
4U8卡 PCIE GPU服务器
Nvlink GPU服务器

常见GPU卡形态


2.3 PLX 三种拓扑
Balance拓扑
适合GPU直通虚拟化
中/小规模深度学习训练、推理、仅有云和HPC

Common拓扑
AI训练性能优异
适用于多数的尝试学习训练场景

Cascade拓扑
部分AI训练模型性能最优。
适用于多参数模型的大规模深度学习训练场景

2.4PCIE与SXM参数区别


NVlink和SXM有什么区别
NVlink是链路技术是协议名称,SXM是接口名称,我们所说的NVink整机通常指的是SXM接口的GPU服务器。
PCIE GPU机型是可以通过NVink桥机器实现两卡的互联,客户采购Nvink机型时往往需要多问一句是全互联还是桥机器互联。
HGX模组
Nvlink机型各个厂商都基于英伟达的HGX-GPU模组设计,整机在高度上通常是6U或8U,其中最核心也是价格占比最高是英伟达的GPU模组,可以理解成是一个有8个物理GPU组成的一个大的逻辑
GPU
2.5 nvlink机型主板逻辑图
与PCIE机型的GPU服务器不同,Nvlink机型的主板不需要直接支持GPU。
主板通过四个PCIE Switch提供PCIE通道与HGX模组互联,每个PCIE Switch与2个GPU互联,到每个GPU的链路为PCIEx16。
Intel SPR CPU支持80个PCIE通道,CPU到每个PCIESwitch通常也是PCIEx16。
2个CPU到4个PCIE Switch采用对称设计,架构上实现了PCIE资源的均衡和CPU性能的平均。

HBM (High Bandwidth Memory):显存
HBM是一种高带宽的3D堆叠内存技术,它通过微凸块(Microbumps)和硅通孔(Through-Silicon Vias, TSVs)技术将多个DRAM层堆叠在一起,从而实现更高的数据传输速率和更低的功耗。HBM技术允许在紧凑的空间内提供更大的内存带宽,这对于需要处理大量数据的GPU来说非常重要。HBM内存非常适合于直接与CPU或GPU通信的高带宽应用,除了NVIDIA的高端计算卡(也包括最新推出的Titan V显卡)之外,AMD的Vega56/64也应用了HBM显存来提升显卡性能。每颗GPU搭载4个HBM堆栈式显存的情况下,最大显存容量可达96GB,总显存带宽1.2TB/s。

HGX (High-Performance GPU eXtended):
NVIDIA HGX 是一个计算平台,通过NVLink 和 NVSwitch将多个GPU串连起来,提供强大的AI运算能力。
HGX是一种专为大规模并行计算和AI加速设计的GPU封装技术。它通常指的是NVIDIA的高端数据中心GPU,如Tesla V100或A100,这些GPU采用HBM内存,提供极高的计算性能和内存带宽。HGX模块设计用于实现多GPU配置,通过NVLink技术实现GPU之间的高速连接。

DGX(Data Center GPU,数据中心GPU)
NVIDIA DGX是 AI 超级计算机。硬件方面包含:GPU、CPU、内存、硬盘、散热系统、软件、操作系统等等,也就是说,除了显示器、键盘、鼠标,它全都有。DGX 可定制性不如 HGX,硬件配置是固定的
DGX系统是NVIDIA的一体化AI超级计算机,通常以塔式机箱或机架式机箱的形式出现。
它们设计为开箱即用,集成了高性能的NVIDIA GPU、内存、存储和网络组件。
DGX系统的外观通常更为紧凑,以适应多种数据中心环境。

SXM (Tesla Scalable X-Module):
SXM是NVIDIA Tesla GPU的一种物理封装形式,特别适用于需要高密度计算和大规模并行处理的数据中心和HPC环境。SXM GPU通常具有更高的功率和性能,支持多GPU扩展,通过NVLink技术实现GPU之间的高速通信。SXM封装允许更灵活的系统设计,以适应不同的计算需求
SXM版本的GPU 发布的时候Nvidia配置了标准的HGX平台, 相当于把8张或者4张GPU在HGX平台做成一个模块,按照模块出售, OEM主机制造商相对比较容易的就把HGX一个模块集成到主机箱里面了。当然, 一个模块上的这8张或者4张显卡还是可以独立插拔的。
SXM版本的显卡功耗更高,机箱的体积、散热的要求都更高。
NvLink和SXM其实说的都是一个东西,只是从不同的角度说的。 NvLink是从互联的角度说的, SXM是从板子上面接口的角度说的。 SXM接口也在不断升级版本。

delta板
delta板+nvswitch+SXM=HGX

2.6算力理论值计算
- TFLOPS
TFLOPS,即每秒浮点运算次数(亦称每秒峰值速度)是每秒所执行的浮点运算次数(英文:Floating-point operations per second;缩写:FLOPS)的简称,被用来评估电脑效能,尤其是在使用到大量浮点运算的科学计算领域中。
FP32、FP16、BF16和FP8都是计算中使用的数字表示形式,特别是在浮点运算领域。这些格式主要通过它们使用的位数来区分,这影响了它们的精度、范围和内存要求。
FP16 半精度浮点数 (Half-precision Floating-point format)
FP32 单精度浮点数 (Single-precision Floating-point format)
FP64 双精度浮点数 (Double-precision Floating-point format)
BF16 Brain Floating Point
数据格式和应用场景
FP64:双精度,通常应用于HPC相关领域
FP32:单精度,训练场景的数据格式
TF32:从A100开始NVIDIA提出的新数据格式,比FP32精度低,比FP16精度高,主要用于深度。学习训练,理论上比FP32+FP16混合精度效果更优
BF16:Intelx86、ARM采用的,可用于训练和推理
FP16:主要用于推理
INT8:主要用于推理



通过降低精度而加快模型训练速度、降低显存占用率的方法——混合精度,使用较低精度的浮点数来表示神经网络中的权重和激活值,从而减少内存使用和计算开销,进而加速训练过程。
半精度:如果对运算的精度要求不高,那么就可以尝试使用半精度浮点数进行运算。这个时候,Tensor核心就派上了用场。Tensor Core专门执行矩阵数学运算,适用于深度学习和某些类型的HPC。Tensor Core执行融合乘法加法,其中两个44 FP16矩阵相乘,然后将结果添加到44 FP16或FP32矩阵中,最终输出新的4*4 FP16或FP32矩阵。NVIDIA将Tensor Core进行的这种运算称为混合精度数学,因为输入矩阵的精度为半精度,但乘积可以达到完全精度。Tensor Core所做的这种运算在深度学习训练和推理中很常见。
单精度:Float32 是在深度学习中最常用的数值类型,称为单精度浮点数,每一个单精度浮点数占用4Byte的显存。
双精度:双精度适合要求非常高的专业人士,例如医学图像,CAD。
常用选择原则
卷积网络和Transformer:Tensor核心数>单精度浮点性能>显存带宽>半精度浮点性能
循环神经网络:显存带宽>半精度浮点性能>Tensor核心数>单精度浮点性能
2.GPU算力计算

GPU算力计算
以A100为例:
A100的核心参数:
CUDA核心数:6912个
加速频率:1.41 GHz
GPU每核心单个周期浮点计算系数是2
A100的标准算力
FP32单精=6912x1.41x2=19491.84 Gflops=19.5Tflops
双精算力=19.5Tflops/2=9.7Tflops

CUDA核心数量:
CUDA是NVIDIA推出的统一计算架构,NVIDIA几乎每款GPU都有CUDA核心,CUDA核心是每一个GPU始终执行一次值乘法运算,一般来说,同等计算架构下,CUDA核心数越高,计算能力会递增。
TFLOPS(teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算。FLOPS(Floating-point operations per second的缩写),即每秒浮点运算次数。
TOPS(Tera Operations Per Second的缩写),1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作。
DMIPS:Dhrystone Million Instructions executed Per Second,每秒执行百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指令。
TFLOPS(Tera Floating Point Operations Per Second)和 TOPS(Tera Operations Per Second)是两种衡量计算性能的单位:
TFLOPS:TFLOPS是每秒执行的万亿次浮点运算。这是衡量计算性能的传统方式,尤其用于需要大量浮点计算的任务,如图形处理和科学计算。
TOPS:TOPS是每秒执行的万亿次运算。这个术语更常用于衡量AI和机器学习硬件的性能,因为这些任务通常包括大量的整数和固定点运算,而不是传统的浮点运算。 TOPS特别适用于评估深度学习推理任务的性能。
总的来说,TFLOPS更多地关注浮点运算性能,而TOPS则涵盖了更广泛的运算类型,更适用于AI和深度学习应用
2.7英伟达GPU常见的各种核心
CUDA Core
英伟达GPU的参数中,最常看到的核心类型。Nvidia通常用最小的运算单元表示自己的运算能力,CUDA Core 指的是一个执行基础运算的处理元件。我们所说的CUDA Core数量,通常对应的是 FP32 计算单元的数量。
Tensor Core
核心特别大,用于机器学习加速,它可以把整个矩阵都载入寄存器中批量运算,实现十几倍的0效率提升,从Volta 架构发布以来,奠定了英伟达在AI训练的领军地位,每次升级都有新支持的数据类型。
RT Cores
正常数据中心级的GPU核心是没有RT Core的,主要是消费级显卡才为光线追踪运算添加了
RT Cores,考虑到芯片的空间有限,每个SM里面只有1个光追核心(为此还砍掉了大部分的FP64)。可以极大地提升了游戏渲染效率。
2.8英伟达 GPU 内部结构

主机接口:读取程指令并分配到对于的硬件单元;
它连接了GPU卡和PCI Express,
它主要的功能是读取程序指令并分配到对应的硬件单元,
例如某块程序如果在进行内存复制,那么主机接口会将任务分配到复制引擎上。
赋值引擎:完成GPU内存和CPU内存之间数据的传递;
当GPU上有复制引擎时,复制的过程是可以与核函数的计算同步进行的。
随着GPU卡的性能变得强劲,现在的瓶颈已经不在计算速度慢,
而是数据的读入,如何合理的调用复制引擎是一个值得思考的问题。
流处理器簇:GPU最核心地方
包括warp调度器、寄存器、Core、共享内存等。
它的设计和个数决定了GPU的计算能力,一个SM有多个core,每个core上执行线程,
core是实现具体计算的处理器,如果core多同时能够执行的线程就多,
但是并不是说core越多计算速度一定更快,最重要的是让core全部处于工作状态,而不是空闲

2.9显存
显存(Graphics Memory)是GPU中重要的组成部分,用于存储图像、计算结果、模型参数等数据。主流的显存技术有GDDR(Graphics Double Data Rate)和HBM(High Bandwidth Memory)。GDDR具有较大的容量和较低的成本,适用于大规模图形处理;而HBM则具有更高的带宽和更低的功耗,适用于高性能计算和深度学习等任务。
显存容量
显存容量:其主要功能就是暂时储存GPU要处理的数据和处理完毕的数据。显存容量大小决定了GPU能够加载的数据量大小。(在显存已经可以满足客户业务的情况下,提升显存不会对业务性能带来大的提升。在深度学习、机器学习的训练场景,显存的大小决定了一次能够加载训练数据的量,在大规模训练时,显存会显得比较重要。
例如,3060的显存芯片为GA106,这颗芯片的配置为192位的GDDR6显存,也就是3060的显存位宽为192bit。每个显存的位宽一般为32bit,容量一般为1G或者2G,192/32 = 6,所以3060的芯片决定了3060只能为6G或者12G显存
常用显存配置如下表:

显存位宽
显存位宽:显存在一个时钟周期内所能传送数据的位数,位数越大则瞬间所能传输的数据量越大,这是显存的重要参数之一,直接关系到显存的带宽
显存位宽是显存在一个时钟周期内所能传送数据的位数,位数越大则在周期时间内所能传输的数据量越大,这是显存的重要标准之一。l
市场上的显存位宽有64、128、192、256、384、448、512(极个别极品高端显卡)位七种,人们习惯上叫的64位显卡、128位显卡等等就是指其相应的显存位宽。对于一般的显卡而言,显存位宽越高,性能越好,价格也就越高。因此384位等以上位宽的显存更多应用于高端显卡,而主流显卡基本都采用128位显存,更高档次的甜点级显卡则采用256位显存。
显存带宽
显存带宽是指显示芯片与显存之间的数据传输速率,它以字节/秒为单位。显存带宽是决定显卡性能和速度最重要的因素之一。要得到精细(高分辨率)、色彩逼真(32位真彩)、流畅(高刷新速度)的3D画面,就必须要求显卡具有大显存带宽。
计算方式为:显存带宽=显存频率X显存位宽/8
在显存频率相当的情况下,显存位宽将决定显存带宽的大小。比如说同样显存频率为500MHz的128位和256位显存,那么它俩的显存带宽将分别为:128位=500MHz128∕8=8GB/s,而256位=500MHz256∕8=16GB/s,是128位的2倍,可见显存位宽在显存数据中的重要性。
3.GPU测试
3.1安装驱动
https://www.nvidia.cn/drivers/lookup/
1.查看GPU卡信息
查看GPU型号:nvidia-smi -q | grep -i “Product Name”
查看GPU槽位:lspci -vt
dmidecode -t slot | grep
开启gpu持久模式:nvidia-smi -pm 1
Persistence-M(Persistence Mode)是一个用户可设置的驱动程序属性的术语。启用持久性模式后,即使没有活动的客户端,NVIDIA驱动程序也会保持加载状态。这样可以最大程度地减少与运行依赖的应用程序(例如 CUDA 程序)相关的驱动程序加载延迟。
执行 nvidia-smi 命令,可查看Persistence Mode当前状态。Persistence-M的值为On时,持续模式为打开状态

查看是否为一拖八:nvidia-smi topo -m

2.驱动下载:
https://www.nvidia.cn/Download/Find.aspx?lang=cn
NVIDIA-Linux-x86_64-525.116.04.run
3.禁用nouveau驱动
安装NVIDIA驱动时,需要禁用nouveau驱动才可以
3.1直接移除
[root@localhost fw]# lsmod |grep -i nouveau
nouveau 1899494 0
video 24538 1 nouveau
mxm_wmi 13021 1 nouveau
wmi 21636 2 mxm_wmi,nouveau
i2c_algo_bit 13413 2 ast,nouveau
drm_kms_helper 186531 3 ast,nouveau,nvidia_drm
ttm 96673 2 ast,nouveau
drm 456166 7 ast,ttm,drm_kms_helper,nvidia,nouveau,nvidia_drm
[root@localhost fw]# rmmod nouveau
[root@localhost fw]# lsmod |grep -i nouveau
3.2或者可以写系统配置文件
vim /etc/modprobe.d/blacklist-nouveau.conf
#添加如下内容
blacklist nouveau
options nouveau modeset=0
#重启
reboot
#验证nouveau是否禁用成功
lsmod |grep nouveau
#没有输出信息表示禁用成功
4.更新驱动安装命令:
[root@localhost fw]# ./NVIDIA-Linux-x86_64-525.116.04.run --no-x-check
安装驱动直接执行run后缀名驱动包,如果装过需要卸载旧版本后安装新版本,
卸载命令nvidia-uninstall 卸载后需重启生效
如果安装始终有问题可以尝试开机时进入bios关闭secure boot

输入accept回车—Driver不打勾,install 回车
安装完成

3.2安装CUDA
1.下载安装
https://developer.nvidia.com/cuda-toolkit-archive
./cuda_11.8.0_520.61.05_linux.run

2.配置环境
修改配置文件,配置环境(用find / -name cuda命令查看cuda路径)
export PATH=/usr/local/cuda-11.8/bin/: P A T H e x p o r t L D L I B R A R Y P A T H = / u s r / l o c a l / c u d a − 11.8 / l i b 64 : PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64: PATHexportLDLIBRARYPATH=/usr

最低0.47元/天 解锁文章
5922

被折叠的 条评论
为什么被折叠?



