GPU与CPU、显卡、显存关系

时间:2024-03-30 15:49:58

最近开始接触云计算底层GPU虚拟化方面的业务,之前对GPU直通,显存监控等了解的不多,查阅资料,做下总结。

GPU与CPU、显卡、显存关系

一、GPU与CPU

GPU 表示 Graphics Processing Unit,即图像处理单元。一开始的时候GPU 主要用于 3D 游戏的渲染,但是现在GPU已经广泛用于加速计算性负载,比如金融模型计算、科学研究以及石油和天然气开发等。从架构上看,CPU 是由若干核(core)和许多的缓存(cache memory)组成,因此CPU可以并行处理若干线程。相对地,GPU是由几百个核组成,因此可以并发处理数千个线程。尽管 GPU 的内核数目远远超过 CPU,但是它的每个核的处理能力远小于CPU的核,而且不具有现代操作系统的所需要的一些特性,GPU 并不合适用于处理普通的计算。它们更多地用于计算消耗性操作,比如视频处理和物理仿真等。

GPU与CPU、显卡、显存关系

                                          (GPU 和 CPU 对比) 

可以使用 lspci 命令来获取 GPU PCI 设备:

# lspci -nn | grep NVI
85:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104GL [GRID K2] [10de:11bf] (rev a1)
86:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104GL [GRID K2] [10de:11bf] (rev a1

输出中各个值的说明:

输出值 含义 详细解释
"85:00.0" 和 “86::00.0” 以 ”bus:slot.func“ 格式来唯一标识一个 PCI 功能设备

唯一定位一个 PCI 设备的虚拟功能,可以是一个物理设备,也可以是一个多功能设备的功能设备,一个多功能设备可以最多有8个功能。

  • 总线号(bus):  从系统中的256条总线中选择一条,0--255。
  • 设备号(slot):  在一条给定的总线上选择32个设备中的一个。0--31。
  • 功能号(func):  选择多功能设备中的某一个功能,有八种功能,0--7。 PCI规范规定,功能0是必须实现的。
”0300“ PCI 设备类型 指 PCI 设备的类型,来自不同厂商的同一类设备的类型码可以是相同的。
“10de” 供应商识别字段(Vendor ID) 该字段用一标明设备的制造者。一个有效的供应商标识由 PCI SIG 来分配,以保证它的唯一性。Intel 的 ID 为 0x8086,Nvidia 的 ID 为 0x10de
“11bf” 设备识别字段(Device ID) 用以标明特定的设备,具体代码由供应商来分配。本例中表示的是 GPU 图形卡的设备 ID。
“a1”  版本识别字段(Revision ID) 用来指定一个设备特有的版本识别代码,其值由供应商提供

二、GPU与显卡

GPU与CPU、显卡、显存关系

GPU是显卡的核心,显卡则是由GPU、显存、电路板,还有BIOS固件组成的,GPU不等于显卡。

GPU只是显卡上的一个核心处理芯片,是显卡的心脏,不能单独作为外接扩展卡使用,GPU因并行计算任务较重,所以功耗较大,只能焊接在显卡的电路板上使用。

显卡上都有GPU,它是区分显性能的最主要元件,显卡也叫显示适配器,分为独立显卡和主板上集成显卡,独立显卡主要由GPU、显存和接口电路构成,集成显卡没有独立显存而是使用主板上的内存。

如果把显卡的电路板看成主板,GPU就是显卡上的CPU,即显卡的*处理器。

现在的GPU开发厂家只有2个,一个是AMD(ATI),一个是N'VIDIA英伟达。GPU之于显卡,就相当于CPU之于电脑的关系。

GPU运算时没有其他CPU那些指令集之类东西干扰,所以专一运算效率更高。

GPU是图形处理器,一般GPU就是焊接在显卡上的,大部分情况下,我们所说GPU就等于指显卡,但是实际情况是GPU是显示卡的“心脏”,是显卡的一个核心零部件,核心组成部分。它们是“寄生与被寄生”关系。GPU本身并不能单独工作,只有配合上附属电路和接口,才能工作。这时候,它就变成了显卡。

三、GPU直通

也就是GPU穿透(pass-through),简单说,GPU直通就是虚拟机实现了将物理显卡直接映射到虚拟机,这样你的虚拟机的图像信息就不再交给虚拟显卡,而是直接发送到你真是存在的显卡进行运算,这样效率更高。

四、GPU虚拟化

虚拟化就是将显卡进行切片,并将这些显卡时间片分配给虚拟机使用的过程。有些型号的GPU设备可虚拟化为n个vGPU,n个虚拟机可同时直接使用该GPU设备,根据不同的GPU设备型号和虚拟策略,可进行GPU独占或透传等相应设计。每个虚拟机通过绑定的vGPU可以直接访问物理GPU的部分硬件资源(所有vGPU都能够分时共享访问物理GPU的3D图形引擎和视频编解码引擎,并拥有独立的显存)

五、显存占用和GPU监控

nvidia-smi是 Nvidia 显卡命令行管理套件,基于 NVML 库,可管理和监控 Nvidia GPU 设备。

GPU与CPU、显卡、显存关系

这里推荐一个好用的小工具:gpustat, 直接pip install gpustat即可安装,gpustat 基于nvidia-smi,可以提供更美观简洁的展示,结合 watch 命令,可以动态实时监控GPU 的使用情况。

watch --color -n1 gpustat -cpu

GPU与CPU、显卡、显存关系

显存可以看成是空间,类似于内存。

  • 显存用于存放模型,数据

  • 显存越大,所能运行的网络也就越大

GPU 计算单元类似于 CPU 中的核,用来进行数值计算。