作者:周兆靖
英特尔® 锐炫™ 系列独立显卡已上市,有A770、A750等多款不同型号,定位不同应用场景的高性能显卡。除桌面端显卡外,英特尔NUC系列产品也搭载了多款移动端独立显卡,有A550M、A730M、A770M等。
考虑到有部分用户是初次体验英特尔的独立显卡,尤其是在Linux系统环境下对显卡驱动的下载与安装并不熟悉。本次我们就着重介绍如何在Linux系统环境下安装英特尔显卡的驱动,并且也测试了显卡的AI推理性能。
显卡驱动安装教程
英特尔® 锐炫™ 系列独立显卡仅支持Linux系统环境下的Ubuntu 20.04与Ubuntu 22.04两个版本,安装前一定要确保当前系统版本符合要求。本次教程使用A770(16GB)显卡,在Ubuntu 20.04 LTS系统版本下安装驱动。
驱动安装前的准备工作
1、了解Resizable Base Address Register (RBAR) 功能
RBAR的中文名称是可调整大小的基址寄存器,是一项标准化的PCI Express接口技术,在许多最新的CPU和主板平台中能看见,被广泛用于嵌入式系统中,通常与外设控制器相关联。通过更改RBAR的值,可以动态更改内存访问地址,让CPU能直接读取或写入外设的寄存器或缓冲区。
当电脑运行游戏时,GPU显存(VRAM)借助CPU到 GPU之间的传输通道,不断传输游戏内纹理、着色器和几何形状等大量数据。通过RBAR帮助,系统可以按需请求资源并以整体方式传输,因此 CPU便能有效访问整个帧缓存。以前CPU单次向 GPU存取的内容被限制在 256 MB。而大型游戏引擎在传统设计下,若数据超过256MB,便会频繁在 CPU和GPU之间来回传输,导致整体运算效率低,从而影响游戏帧数(FPS)。当然,AI计算也是同理,频繁拷贝数据势必会浪费计算资源与带宽。有了RBAR技术,CPU可以完全存取整个GPU显存 (VRAM),不通过共享内存作为缓冲区进行协作,减少与GPU沟通次数,极大提高了CPU和GPU之间的运算效率。
同等硬件条件下,开启与关闭RBAR功能得到的推理性能如下:
CPU:i7-11700T
dGPU:A770(16GB)
Memory: 32GB
系统版本:Ubuntu 20.04 LTS
测试软件:benchmark_app from OpenVINO™ Toolkit
模型地址:
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/001-hello-world/model
2、检查系统配置并开启RBAR功能
lspci -v |grep -A8 VGA
以上信息中黄色方块内代表当前PCIe通道内存的存取内容体积大小。可以看到图中size=16G,表明CPU向GPU可访问数据的最大值为16G,等同于当前显卡的16GB显存,证明主板BIOS中的RBAR功能已开启。若RBAR功能没开启,一般情况下显示为size=256MB。解决办法是去主板BIOS中开启RBAR功能。
本次演示的主板型号是技嘉Z590,BIOS版本为F7,BIOS日期为11/03/2021,BIOS ID为BARKL012。电脑开机按DEL键进入主板BIOS界面:
点击setting选项进入设置页面:
点击IO Ports选项:
点击Above 4G Decoding选项,将其设置为Enable选项激活状态:
这时Above 4G Decoding选项下方会出现Re-Size BAR Support选项,将其设置为Auto选项,即可激活RBAR功能。
保存BIOS设置并重启电脑:
进入Linux系统桌面使用lspci命令再次验证Memory那行的Size数值是否等于当前显卡的显存容量。由于市售主板型号众多且不同品牌的BIOS界面会有不同,请在安装锐炫™ 独立显卡后根据各型号主板BIOS操作手册开启RBAR功能。
备注:RBAR功能目前只支持大多数第十代英特尔® 酷睿™ 以及十代以后的CPU平台。
通过Ubuntu终端安装
英特尔® 锐炫™ 系列独立显卡驱动
1、安装gpg-agent和wget
首先确保系统已安装gpg-agent和wget,然后会下载并安装用于验证软件包仓库完整性的公钥。在apt下载库中添加英特尔® 显卡驱动下载库,这样可以在安装显卡时从英特尔资源库中拉取相应驱动资源。最后将repositories.intel.com/graphics 库添加至当前系统中。
sudo apt-get install -y gpg-agent wget
wget -qO - https://repositories.intel.com/graphics/intel-graphics.key |
\ sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg]
https://repositories.intel.com/graphics/ubuntu focal-devel main'
sudo tee /etc/apt/sources.list.d/intel.gpu.focal.list
向右滑动查看完整代码
2、安装特定版本的Linux OEM kernel
Dynamic Kernel Module Support(DKMS)指一种用于在Linux系统中管理动态内核模块的框架。它允许第三方驱动程序开发人员将自己的驱动程序打包成DKMS格式,并与Linux内核进行集成。
使用DKMS,当系统升级到新版本内核时,所有已安装的第三方驱动程序都会自动重新构建和安装,从而保持与新内核的兼容性。避免手动重新编译和安装驱动程序的繁琐过程,简化Linux系统中动态内核模块的管理和部署过程,提高系统稳定性和可靠性。
当前DKMS仅支持Linux 5.14.0-1047 oem kernel,通过以下命令安装Linux 5.14.0-1047 oem kernel:
sudo apt-get install linux-image-5.14.0-1047-oem
安装完成后,使用命令更改GRUB设置为默认载入oem kernel:
sudo sed -i "s/GRUB_DEFAULT=.*/GRUB_DEFAULT=\"1> $(echo $(($(awk -F\'
'/menuentry / {print $2}' /boot/grub/grub.cfg \
| grep -no '5.14.0-1047' | sed 's/:/\n/g' | head -n 1)-2)))\"/"
/etc/default/grub
sudo sed -i
"s/GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$(echo
$(awk -F'="' '$1 == "GRUB_CMDLINE_LINUX_DEFAULT" {print $2}' \
/etc/default/grub | tr -d '
pci=realloc=off\"/" /etc/default/grub
向右滑动查看完整代码
重启计算机,使kerne生效:
sudo reboot
使用以下命令来获取当前kernel信息,确保kernel已被更改为Linux 5.14.0-1047 oem kernel:
uname -r
若成功安装Linux 5.14.0-1047 oem kernel,应收到的返回信息:
注意:如果你在BIOS中设置了安全启动,会在重启时收到提示,请选择Enroll MOK选项来使新kernel发挥作用。
可选项:若旧kernel不需要同时被编译,可以选择将其卸载:
sudo apt-get remove (previous kernel’s name)
3、安装DKMS模块
安装独立显卡特定的DKMS模块使驱动生效:
sudo apt-get update
sudo apt-get install gawk
sudo apt-get install dkms linux-headers-$(uname -r) libc-dev
sudo apt-get install intel-i915-dkms intel-platform-cse-dkms pmt
4、安装run-time组件
使用apt-get命令安装一些使用英特尔® 独立显卡进行渲染、编解码、运算等操作所需的必要组件:
sudo apt-get install intel-opencl-icd intel-level-zero-gpu level-zero \
intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \
libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm11 libxatracker2 mesa-va-drivers \
mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all
向右滑动查看完整代码
重启生效:
sudo reboot
5、将user添加至render组中,以获取访问独立显卡的权限
查看当前所有显卡驱动所属组的名称:
stat -c "%G" /dev/dri/render*
你将会收到:
使用以下命令查看当前用户所在组的详情:
groups ${USER}
若返回信息中没有render组,需要将当前user添加render组的权限,使用以下命令:
sudo gpasswd -a ${USER} render
激活组的更改:
newgrp render
6、验证驱动成功安装
若以上六步全部完成,请使用以下命令验证驱动是否正确安装:
sudo apt-get install hwinfo
hwinfo --display
若正确安装,你将会收到如图所示信息:
安装步骤细节与文字较多,大家也可以参考官方驱动安装手册。若有开发者使用的OS版本为Ubuntu 2022.04 LTS,也可以在官方手册中找到该系统下独立显卡驱动安装步骤指引。安装手册参考:
https://dgpu-docs.intel.com/installation-guides/index.html
同时使用独立显卡(discrete GPU)
和集成显卡(integrated GPU)
一般情况下,当插入dGPU之后,一些品牌主板会自动屏蔽iGPU的渲染和计算功能,此时需要重启进入主板BIOS界面,将使用iGPU的运行开关打开。以技嘉Z590主板BIOS为例,展示如何通过修改BIOS设置让iGPU设备可用。
1、通过BIOS 激活系统中的集成显卡
进入BIOS界面,点击Setting选项页面:
点击IO Ports选项:
找到Internal Graphics选项并设置为Enable选项:
保存BIOS更改并重启,完成iGPU激活流程。
2、检查系统中显卡硬件是否可用
在BIOS中完成iGPU的激活后进入系统,使用以下命令检查显卡硬件信息:
hwinfo --display
如果看到信息如图所示,说明iGPU和 dGPU都可以正常工作:
成功安装锐炫™ 独立显卡的驱动后,选择使用dGPU进行图像渲染显示输出,需要将显示器的数据线接在dGPU的输出接口中。此时,深度学习计算可以选择使用dGPU、iGPU单独进行计算或dGPU与 iGPU同时参与计算。
若是把显示器的数据线插在主板的显示输出接口中,此时iGPU负责图像渲染显示输出。可以单独选择使用iGPU或者dGPU进行深度学习计算,当然也可以同时使用iGPU和dGPU进行深度学习计算。
安装OpenVINO™ 并测试
锐炫™ 系列独立显卡的推理性能
OpenVINO™ 是英特尔发布的一款开源且商用免费的工具套件。主要应用于计算机视觉、实现神经网络模型优化和推理计算加速。该工具可以帮助开发者在英特尔的推理硬件上(CPU、dPGU、iGPU)快速部署 AI应用程序和解决方案。
了解更多:
https://www.intel.cn/content/www/cn/zh/developer/tools/openvino-toolkit/overview.html
本次以锐炫™ 系列A770(16GB)显卡为例,在Ubuntu 20.04 LTS系统下进行OpenVINO™ 工具套件安装和独立显卡的推理性能测试:
1:创建虚拟运行环境
python -m venv openvino_env
2:激活OpenVINO™ 工作环境
. openvino_env\scripts\activate
3:升级pip版本
python -m pip install --upgrade pip
4:下载OpenVINO™ 开发工具套件
5:下载OpenVINO™ 示例代码集
git clone
https://github.com/openvinotoolkit/openvino.git
6:查看本地支持OpenVINO™ 的推理硬件列表:
python3 /openvino/samples/python/hello_query_device.py
iGPU
dGPU
将模型下载至当前文件夹中,使用OpenVINO™ 提供的模型性能评估工具(benchmark_app)运行模型推理,部署至A770独立显卡中进行性能测试。
测试命令如下:
模型地址:
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/001-hello-world/model
OpenVINO™ 工具套件可以通过不同的插件(Plugin)来调用当前系统下的推理硬件。比如:CPU、dGPU和iGPU,进行硬件推理的性能测试。以及MULTI插件可以协同调用任意多个推理硬件同时推理,AUTO插件可以自动选择当前系统下最优硬件进行推理。当前系统下,各推理硬件推理性能的测试如下图所示:
- Ubuntu 20.04 LTS i7-11700T with A770(16GB)
- Command: benchmark_app –m “yolov7-tiny.xml” –d
总结
相比可以直接使用驱动安装包的Windows系统,Linux系统在dGPU 的驱动安装上会稍微复杂一些。用户插入dGPU之后,可以根据本文在Ubuntu系统下安装所需要的驱动。驱动安装完成后,按照本文步骤方法,检查驱动是否已正确安装并启用。完成安装后,dGPU才能进行高分辨率图像渲染输出,同时也可以使用dGPU进行编解码,AI 模型的训练与推理,以及OpenVINO™ 的应用部署等一系列操作。
从OpenVINO™ 提供的性能测试工具得到的数据来看, dGPU(A770)的AI推理性能相较于Tiger-Lake的CPU强劲非常多,并且dGPU与其他推理硬件,例如iGPU、CPU的协同推理都十分易于实现且稳定。在MULTI插件帮助下,协同CPU与dGPU能够获得相较于单独使用某一设备更好的推理性能数据,并且部署至多设备协同推理时十分易用。AUTO插件也可以快速选择到当前系统中的最优硬件进行推理。开发者可以将前期基于OpenVINO™ 在CPU或iGPU开发的AI应用快速迁移至dGPU中实现,推荐开发者尝试联合推理硬件进行AI推理以获得更强性能。
注:文中涉及的其它名称及商标属于各自所有者资产。
,