全系列Intel GPU在树莓派与RISC-V平台上的运行指南

本文详细介绍了如何在树莓派5/500/CM5等ARM架构设备,乃至RISC-V平台上,配置并运行Intel Arc系列独立显卡。内容涵盖硬件连接、内核配置、固件安装、桌面环境调试及性能测试,并指出了各型号显卡在非x86系统上的特定问题与优化方法。

全系列Intel GPU在树莓派与RISC-V平台上的运行指南

我们终于让Intel Arc GPU在树莓派上运行得相对稳定了——这需要克服许多小障碍,但如果能成功将一个小补丁推送上游,支持就有望登陆Raspberry Pi OS。如果实现,你在树莓派上使用Intel显卡只需安装一个固件包。

目前为止我花费最多时间测试的显卡有:

  • Intel Arc A750 (亚马逊售价$249)
  • Intel Arc B580 (亚马逊售价$249)
  • Intel Arc B50 (新蛋网售价$349)
  • Intel Arc A310 ECO (亚马逊售价$109)

我也收到了关于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扩展坞,比如Minisforum DEG1或JMT的这一款。然后,你需要通过一个PCI express适配器将其插入树莓派,比如在Pi 500上,我用了这个M.2转Oculink适配器,配上一根Oculink线缆从适配器连接到扩展坞。大多数显卡还需要一个独立的电源,因此你需要一个PC电源来为扩展坞供电,有时也需要为显卡供电。

但接下来才是让运行Pi OS Trixie的Pi 5/500/CM5与任何当前Intel显卡协同工作所需的所有步骤(对于AMD显卡,这甚至更容易,但我稍后会谈到;)。之后,我会重点介绍我一直在测试的各款Intel显卡的特殊情况。

如果你不喜欢阅读(那你为什么在这个博客上?),这里有一个关于在Pi上使用Intel显卡的视频:

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

我知道有些人可能对树莓派搭配Intel Arc GPU的配置价值与购买台式机PC并添加显卡相比如何感兴趣,以下是我的配置基础数据,供你参考:

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

请注意,截至本文撰写时,B50目前到处都缺货(它似乎达到了Intel的一个性价比甜点……),但B580价格相近且速度更快,不过功耗更高,显存更少。此外,你可能需要购买USB-C电源适配器和microSD卡……换句话说,价值和你需要的东西取决于你手头已经拥有的物品。

但你也可以购买一台迷你塔式PC(尤其是二手的)并获得类似的性能,总功耗稍高,但拥有完全支持的驱动程序。所以,不,我不建议你构建一个Pi eGPU配置,除非你有非常特殊的需求,或者想在小巧的Arm系统上学习和使用GPU。

配置Pi内核(无需重新编译!)

  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. 较旧的Intel卡可能不会被Xe驱动程序自动识别,因此通过在/boot/firmware/cmdline.txt中添加以下内容,告诉它强制探测所有连接的卡:
    1
    
    xe.force_probe=*
    
  5. 重启:sudo reboot

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

安装非自由固件

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

  • firmware-intel-graphics 用于Intel
  • 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

然后重启。

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

获得可用的桌面环境

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

为了让桌面环境正常工作,我还需要手动编译Mesa,因为Pi OS中内置的版本目前不包含iris支持(Iris是Mesa中Intel Arc的Gallium和Vulkan驱动程序名称……)。

启用可调整大小的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驱动程序尝试调整Pi为GPU分配的BAR(基址寄存器)大小,但失败了。这应该能工作,但目前不行,至少对Intel GPU驱动程序不行;参见Pi 5上的可调整大小BAR支持。

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

Intel显卡的特殊情况

我测试的每一款Intel卡都有一个或两个值得一提的特殊情况:

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

Intel显卡性能

我一直在我的Pi PCI Express数据库网站的这个问题上对我的所有Pi上的GPU进行基准测试,但我想特别强调GravityMark基准测试。GravityMark几乎完全受GPU限制,因此是观察这些卡之间相对性能的好方法。

Intel显卡,好吧,它们不会夺得任何桂冠,特别是因为Nvidia甚至还没有出现在这个列表上。但它们也并非懒散之辈,特别是考虑到价格。

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

但我之前提到的那些特殊情况似乎会影响3D渲染和AI,尤其是在涉及更多内存时。因此,虽然性能还可以,但在我们解决内存问题之前,在Pi上使用这些卡更多是为了好玩。

下一步去哪里?

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

但在这些更改进入Raspberry Pi Linux之前,我们需要分解它们并将其推送到上游Linux——这是可能的!我目前正在与Pi社区的一些其他人交流,以了解我们希望如何推进。

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

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

所以请保持关注,并确保关注你感兴趣的任何问题,可以通过我的树莓派PCIe项目网站!

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