作者:  周兆靖

1. 本文目的

        目前,英特尔®推出了包括了Arc™家族A770,A750在内的多个桌面版本的独立显卡(discrete Graphic Processing Unit,简称dGPU)供玩家与开发者进行选择。鉴于很多消费者都是初次体验Intel®的独立显卡,在Linux*系统下对于显卡驱动的下载与安装并不熟悉,并且Arc™系列的显卡驱动需要手动安装,所以本文提供了Linux系统下Intel®独立显卡驱动的安装指南以及驱动安装成功的验证方法,并测试了dGPU的推理性能。

: * 文中涉及的其它名称及商标属于各自所有者资产。

2. Linux系统下英特尔®独立显卡的驱动安装

         目前,Arc™系列独立显卡只支持Linux系统下的Ubuntu* 20.04Ubuntu* 22.04两个版本,你需要确保当前系统版本符合要求。

        本节以Intel® Arc™A770 16GB 为例,在Ubuntu 20.04 LTS下安装独立显卡驱动。硬件环境为:CPU i7-11700T,dGPU A770(16GB), 内存 32GB,技嘉*主板Z590。

2.1 驱动安装前的准备工作        

2.1.1 Resizable Base Address Register(RBAR)功能  

        RBAR的中文名称是可调整大小的基址寄存器,是一项标准化的 PCI Express 接口技术,可在许多最新的 CPU 和主板平台中看见其身影。它也被广泛用于嵌入式系统中,并且通常与外设控制器相关联。通过更改RBAR中的值,可以动态地更改内存访问地址,从而使CPU能够直接读取或写入外设的寄存器或缓冲区。

        当电脑运行游戏时,GPU 显存 (VRAM) 借助CPU 到 GPU 之间的传输通道,不断地传输游戏世界里的纹理、着色器和几何形状等大量信息。在 RBAR 的助力下,系统可以按需请求资源并以整体方式将其进行传送,因此 CPU 便能有效访问整个帧缓存。过去,CPU 单次向 GPU 存取的内容被限制在 256 MB。大型游戏引擎在传统的设计下,若资料量超过这个大小,数据会频繁地在 CPU 和 GPU 之间来回沟通,导致整体运算效率低,影响游戏FPS呈现。AI计算也是同理,频繁的资料拷贝势必会浪费计算资源与带宽。在RBAR技术的帮助下,CPU可以完全存取整个VRAM,而不必通过共享内存作为缓冲区进行协作,减少了与GPU的沟通次数,极大地提高了CPU和GPU之间的运算效率。

        同等硬件条件下,开启与关闭RBAR功能得到的推理性能如下:

 测试设备:CPU i7-11700T dGPU:A770(16GB) Memory: 32GB Ubuntu 20.04 LTS

测试软件: benchmark_app from OpenVINO™ Toolkit

模型地址:openvino_notebooks/notebooks/001-hello-world/model at main · openvinotoolkit/openvino_notebooks · GitHub

2.1.2 检查系统配置并开启RBAR功能

a.检查当前系统是否开启了RBAR功能:

lspci -v |grep -A8 VGA

         得到以上的信息中,黄色方块里代表当前PCIE通道内存存取内容的体积大小。可以看到图中,“size=16G“ 说明CPU向GPU可访问数据的最大值为16GB,且等同于当前显卡的16GB显存,则证明主板BIOS中的RBAR功能已经开启。若RBAR功能没有开启,此处一般情况下显示为 “size=256MB”,这种情况下就需要去到主板BIOS中开启RBAR功能。

b.开启系统中的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界面会略有不同,请在安装Intel® ARC™系列独立显卡后根据各型号主板BIOS的操作手册开启RBAR功能。

        备注:RBAR功能目前只支持大多数10代酷睿™以及10代以后的CPU平台。

2.2通过Ubuntu终端安装IntelARC系列独立显卡驱动

2.2.1 安装gpg-agent 和wget

        首先确保你的系统已经安装了gpg-agent和wget,然后它将下载并安装用于验证软件包仓库完整性的公钥。在apt的下载库中添加Intel®显卡驱动下载库,这样可以在安装显卡时从Intel®的资源库中拉去相应的驱动资源。最后,将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.2.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 '"') | sed 's/pci=realloc=off//g') pci=realloc=off\"/" /etc/default/grub

        重启计算机,使kernel生效:

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)

2.2.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

2.2.4 安装run-time 组件  

        使用apt-get命令安装一些使用Intel®独立显卡进行渲染,编解码,运算等操作所需的必要组件:

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

2.2.5 将user添加至render组中,以获取访问独立显卡的权限   

        查看当前所有显卡驱动所属组的名称:

stat -c "%G" /dev/dri/render*

        你将会收到:

        使用如下命令查看当前用户,所在组的详情: 

groups ${USER}

         若返回的信息中没有“render”组的话,你需要将当前user添加render组的权限,使用如下命令:

sudo gpasswd -a ${USER} render

        激活组的更改:

newgrp render

2.2.6 验证驱动成功安装

        若以上六步全部完成,请使用如下命令验证驱动是否正确安装:

sudo apt-get install hwinfo

hwinfo --display

        若正确安装,你将会收到如图所示的信息:

         鉴于安装步骤细节与文字较多,你也可以参考官方的驱动安装手册进行Arc™系列显卡驱动的安装。若有开发者使用的OS版本为Ubuntu 2022.04 LTS ,也可以在官方的手册中,找到该系统下独立显卡驱动安装的步骤指引,安装手册参考:Installation Guides — Intel® software for general purpose GPU capabilities documentation  

3. 同时使用独立显卡(discrete GPU)和集成显卡(integrated GPU

        一般情况下,当你插入dGPU之后,一些品牌的主板会自动屏蔽iGPU的渲染和计算功能,此时需要进入重启进入主板的BIOS界面将使用iGPU的运行开关打开。

        本节以技嘉的Z590的BIOS为例,向你展示如何通过修改BIOS设置让iGPU设备可用。

3.1 如何通过BIOS激活系统中的集成显卡

        进入BIOS界面,点击“Setting”页面:

         点击“IO Ports“:

        找到“Internal Graphics”将此选项设置为“Enable”:

         保存BIOS更改并重启之后,完成iGPU的激活流程。

        3.2 如何检查系统中显卡硬件是否可用

在BIOS中完成iGPU的激活后,进入系统,使用如下命令检查显卡硬件信息:

hwinfo --display

如果你看到的信息如图所示,说明你的iGPU和dGPU都可以正常工作了:

         当你成功安装了Intel® ARC™独立显卡的驱动之后,你就可以选择使用dGPU进行图像渲染显示输出,这时候显示器的数据线接在dGPU的输出接口中。

        此时,深度学习计算可以选择使用dGPU,iGPU单独进行计算或dGPU与iGPU同时参与计算。

        若你把显示器的数据线插在主板的显示输出接口中,这时候iGPU负责图像渲染显示输出。

        此时,你可以单独选择使用iGPU或者dGPU进行深度学习计算,当然你也可以同时使用iGPU和dGPU进行深度学习计算。

4. 安装OpenVINO工具套件并测试ARC系列独立显卡的推理性能

OpenVINO™工具套件是Intel®发布的一款开源且商用免费、主要应用于计算机视觉、实现神经网络模型优化和推理计算加速的软件工具套件。该工具也可以帮助开发者在Intel®的推理硬件上(CPU,dPGU,iGPU)快速部​​署AI应用程序和解决方案。了解更多:英特尔® 发行版 OpenVINO™ 工具套件

        本节以ARC™系列A770(16G)显卡为例,在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™ 开发工具套件

pip install openvino-dev[ONNX,tensorflow2,caffe,kaldi,pytorch,mxnet]==2022.3.0

步骤 5: 

下载OpenVINO™  示例代码集

git clone https://github.com/openvinotoolkit/openvino.git

步骤 6: 

查看本地支持OpenVINO™ 的推理硬件列表:

python3 /openvino/samples/python/hello_query_device.py

         将模型下载至当前文件夹中,使用OpenVINO™提供的模型性能评估工具(benchmark_app)运行模型推理,部署至A770独立显卡中进行性能测试,测试命令如下:

benchmark_app –m “v3-small_224_1.0_float.xml” –d GPU.1

        模型地址:openvino_notebooks/notebooks/001-hello-world/model at main · openvinotoolkit/openvino_notebooks · GitHub

        OpenVINO™工具套件可以通过不同的插件(Plugin)来调用当前系统下的推理硬件,比如: CPU, dGPU和iGPU,进行硬件推理的性能测试。以及MULTI插件可以很轻松地协同调用任意多个推理硬件同时推理,AUTO插件则可以自动选择当前系统下最优硬件进行推理。当前系统下,各推理硬件推理性能的测试如下图所示:

  • Ubuntu 20.04 LTS i7-11700T with A770(16GB)
  • Command: benchmark_app –m “v3-small_224_1.0_float.xml” –d <Plugin_Name>

  • Ubuntu 20.04 LTS i7-11700T with A770(16GB)
  • Command: benchmark_app –m “yolov7-tiny.xml” –d <Plugin_Name>

5.总结

        相比起可以直接使用驱动安装包的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推理以获得更好的性能。

: * 文中涉及的其它名称及商标属于各自所有者资产。

Logo

为开发者提供丰富的英特尔开发套件资源、创新技术、解决方案与行业活动。欢迎关注!

更多推荐