英特尔Arc GPU在树莓派与RISC-V平台上的运行全攻略

本文详细介绍了如何在树莓派和RISC-V等非x86平台上配置并运行英特尔Arc系列独立显卡,涵盖了硬件连接、内核配置、固件安装、故障排除以及不同型号显卡的实测性能与特有问题的深入技术分析。

英特尔Arc GPU在树莓派与RISC-V平台上的运行

我们终于让英特尔Arc GPU在树莓派上实现了基本稳定的运行——这需要克服许多小障碍,但如果能将一个简单的补丁推送到上游,支持就可能登陆Raspberry Pi OS。如果实现,你在树莓派上使用英特尔显卡就只需安装一个固件包。

目前我花费最多时间测试的显卡型号是:

  • 英特尔Arc A750
  • 英特尔Arc B580
  • 英特尔Arc B50
  • 英特尔Arc A310 ECO

我也收到了关于A350和A770的良好反馈,尽管我个人尚未测试这些卡。此外,低端的A310对PCIe链路信号完整性特别挑剔,因此使用一个稳定的eGPU扩展坞和可靠的PCIe适配器/线缆是值得的!

在我发布了关于某些eGPU扩展坞不如其他型号可靠的博文之后,有人联系并询问我是否尝试过带有内置PCI Express ReDriver的M.2转OcuLink适配器。这有助于改善链路质量,特别是在从全尺寸PCIe转换到OcuLink,再到M.2,最终连接到树莓派的PCIe总线时。结果……效果不错!我现在可以将我所有的显卡与Minisforum DEG1扩展坞一起使用了,这很好——因为它能更稳定地支撑像AMD RX 7900 XT这样的大型显卡!

快速回顾一下,要将显卡物理连接到树莓派,你需要一个eGPU扩展坞。然后通过一个PCI express适配器将其插入树莓派。大多数显卡还需要单独的电源,因此你需要一个PC电源来为扩展坞供电,有时也包括显卡本身。

接下来的内容是为在Pi 5/500/CM5上运行Pi OS Trixie,并使它能与任何当前的英特尔显卡协同工作所需的所有步骤。之后,我将重点介绍我一直在测试的每款英特尔显卡的特殊之处。

关于成本与价值的简要说明

我知道有些人可能对树莓派搭配英特尔Arc GPU的性价比感兴趣,以下是我搭建的基本配置价格参考:

部件 价格
Raspberry Pi CM5 8GB $85
CM5 IO Board(包含M.2插槽) $25
JMT M.2 M-key eGPU扩展坞 $86
Thermaltake 500W电源 $40
英特尔Arc B50 16GB GPU $350
总计:$586

请注意,就本文撰写时,B50目前到处缺货,但B580价格相近且速度更快,不过功耗更高,显存更少。此外,你可能需要购买USB-C电源适配器和microSD卡……换句话说,具体需求和花费取决于你手头已有的东西。

你也可以购买一个小型塔式PC(尤其是二手),获得相似的性能,总功耗略高,但驱动完全支持。所以,除非你有非常具体的需求,或者想在小巧的Arm系统上学习和尝试GPU,否则我不建议你搭建树莓派eGPU系统。

配置树莓派内核(无需重新编译!)

  1. 确保你安装的是全新的Pi OS Trixie,并已更新到最新软件包(运行 sudo apt upgrade -y 并重启)。
  2. 从Raspberry Pi Linux仓库安装6by9的自定义Pi内核:sudo rpi-update pulls/7113
  3. 该PR是为bcm2711_defconfig配置的(技术上适用于Pi 4),因此编辑/boot/firmware/config.txt并在底部添加以下内容:
    1
    2
    3
    
    kernel=kernel8.img  # 使用PR 7072中的bcm2711配置
    dtparam=pciex1_gen=3  # 用于更快的PCIe Gen 3速度
    auto_initramfs=0  # 避免“奇怪的启动机制或文件系统”
    
  4. 较旧的英特尔卡可能不会被Xe驱动自动识别,因此通过在/boot/firmware/cmdline.txt中添加以下内容,强制探测所有连接的卡:
    1
    
    xe.force_probe=*
    
  5. 重启:sudo reboot

此时,你需要安装所用显卡的固件。

安装非自由固件

理想情况下,所有当前固件都包含在以下三个包之一中(使用 sudo apt install -y [包名] 安装):

  • firmware-intel-graphics 用于英特尔
  • firmware-amd-graphics 用于AMD
  • firmware-misc-nonfree 用于Nvidia

安装后,重启。如果显卡仍然没有输出任何信号,可能因为它太新,系统包中的固件版本过旧。可以用dmesg检查。

例如,对于我的B580,我收到以下信息:

1
2
3
4
[    5.063645] xe 0001:03:00.0: [drm] GT1: Using GuC firmware from xe/bmg_guc_70.bin version 70.36.0
[    5.063657] xe 0001:03:00.0: [drm] GuC firmware (70.45.2) is recommended, but only (70.36.0) was found in xe/bmg_guc_70.bin
[    5.063667] xe 0001:03:00.0: [drm] Consider updating your linux-firmware pkg or downloading from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
[    5.067926] xe 0001:03:00.0: [drm] GT1: Using HuC firmware from xe/bmg_huc.bin version 8.2.10

我可以用以下命令手动下载更新的固件文件:

1
2
cd /usr/lib/firmware/xe && \
sudo wget -O bmg_guc_70.bin -q https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/xe/bmg_guc_70.bin

然后重启。

对于Alchemist系列显卡(例如A380、A750等),你可能需要将固件文件下载到/usr/lib/firmware/i915目录。

让桌面环境正常工作

使用我的B580时,我注意到桌面环境(labwc-pi)仍然没有自动启动。我卡在“闪烁光标”模式,不得不按Alt+F2进入控制台。

为了让桌面环境工作,我还需要手动编译Mesa,因为Pi OS中集成的版本目前不包含iris支持(Iris是Mesa中英特尔Arc的Gallium和Vulkan驱动名称……)。

启用Resizeable BAR

如果你深入查看日志,还会看到类似这样的条目:

1
[    4.742322] xe 0001:03:00.0: [drm] Failed to resize BAR2 to 16384M (-ENOSPC). Consider enabling 'Resizable BAR' support in your BIOS

这意味着Xe驱动程序尝试调整树莓派为GPU分配的BAR(基地址寄存器)大小,但失败了。这本来应该可行,但目前不行,至少对英特尔GPU驱动来说是这样。

要解决这个问题,你可以在Xe驱动程序初始化之前,手动调整树莓派上的BAR大小。我为此写了一篇指南。

英特尔显卡的特殊问题

我测试的每一款英特尔显卡都有一两个值得一提的特殊问题:

  • 英特尔Arc A750:A750有一些渲染伪影,通常出现在绘制对象的顶部,如窗口、菜单栏和网页浏览器中显示的图片。使用Vulkan时,3D对象上的纹理有时无法加载,但OpenGL似乎渲染得很好,具有完整的3D加速。
  • 英特尔Arc B580:与A750类似,存在伪影,但似乎稍微不那么普遍。内存对于较小的AI模型加速来说似乎没问题,但我无法稳定运行占用超过4或5GB显存的大型模型。
  • 英特尔Arc B50:与B580类似,大型AI模型无法正确运行,并且在某个点会开始重复输出。对于纯GPU加速任务,它甚至比A750还要慢一些,但由于其较小的体积、安静的风扇和低功耗要求,它可能适合工作站、小型机箱构建或更节能的设置。
  • 英特尔Arc A310 ECO:这张卡很难在PCIe总线上被识别;我不得不购买一个带有内置ReDriver的M.2转Oculink适配器来增强PCIe链路信号,否则无论我尝试哪种eGPU扩展坞,它都会尝试协商链路并在几分钟后失败。它速度很慢,但也可以安装在单槽半高尺寸中。它的显存不足以做很多事情,但价格只在100美元左右,所以如果你只是想要一个小型的GPU加速器,它或许是个选择。

英特尔显卡性能

我一直在我的树莓派PCI Express数据库网站上的一个问题中对我所有的GPU在树莓派上进行基准测试,但我想特别强调一下GravityMark基准测试。GravityMark几乎完全依赖于GPU,因此它是观察这些显卡之间相对性能的好方法。

英特尔显卡,嗯,它们不会赢得任何桂冠,尤其是Nvidia甚至还没有出现在这个列表上。但它们也并非弱者,特别是考虑到价格因素。

我也在它们上面运行了AI模型,至少对于较小的模型,它们的表现也还可以。特别是B50 Pro,它有足够的RAM,并且比其它显卡更节能,因此可能是一个高效、小型LLM机器的可行选择。

但前面提到的那些特殊问题似乎影响了3D渲染和AI,尤其是当涉及更多内存时。所以,尽管性能尚可,但在我们解决内存问题之前,在树莓派上使用这些显卡更多是出于乐趣。

下一步方向?

目前用于AMD和英特尔显卡支持的PR工作得很好——我还维护了一个单独的PR,其中仅包含目前所需的23行补丁。

但在这些更改进入Raspberry Pi Linux之前,我们需要分解它们并让它们进入上游Linux——这是可能的!我目前正在与树莓派社区的一些其他人交流,看看我们想如何推进。

英特尔的更改尤其不仅影响Arm,还影响RISC-V。因此,RISC-V社区的一些成员一直在并行开发一个补丁,并且已经提交到邮件列表。事实上,我收到的第一个LKML回复就是关于那个补丁系列的!

主要的是确保我们所做的任何更改在架构上是合理的,并且适用于所有非x86系统,而不仅仅是树莓派。

敬请关注,并确保关注你感兴趣的任何问题。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计