全系列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内核(无需重新编译!)
- 确保你有一个全新的Pi OS Trixie安装,并更新到最新的软件包(运行
sudo apt upgrade -y并重启)。 - 从Raspberry Pi Linux仓库安装6by9的自定义Pi内核:
sudo rpi-update pulls/7113 - 此PR是为
bcm2711_defconfig配置的(技术上用于Pi 4),因此编辑/boot/firmware/config.txt并在底部添加以下内容:1 2 3kernel=kernel8.img # 使用PR 7072中的bcm2711配置 dtparam=pciex1_gen=3 # 以获得更快的PCIe Gen 3速度 auto_initramfs=0 # 避免“奇怪的启动机制或文件系统” - 较旧的Intel卡可能不会被Xe驱动程序自动识别,因此通过在
/boot/firmware/cmdline.txt中添加以下内容,告诉它强制探测所有连接的卡:1xe.force_probe=* - 重启:
sudo reboot
此时,你需要安装你所用显卡的固件。
安装非自由固件
理想情况下,所有当前固件都包含在以下三个软件包之一中(使用 sudo apt install -y [包名] 安装):
firmware-intel-graphics用于Intelfirmware-amd-graphics用于AMDfirmware-misc-nonfree用于Nvidia
安装后,重启。如果卡仍然没有输出任何内容,它可能对于系统软件包中包含的固件来说太新了。可以用dmesg检查。
例如,对于我的B580,我得到了以下消息:
|
|
我可以用以下命令手动下载更新的固件文件:
|
|
然后重启。
对于炼金术士系列卡(例如A380、A750等),你可能需要将固件文件下载到/usr/lib/firmware/i915目录。
获得可用的桌面环境
使用我的B580时,我注意到桌面环境(labwc-pi)仍然没有自动启动。我被卡在“闪烁的光标”模式,必须按Alt+F2才能进入控制台。
为了让桌面环境正常工作,我还需要手动编译Mesa,因为Pi OS中内置的版本目前不包含iris支持(Iris是Mesa中Intel Arc的Gallium和Vulkan驱动程序名称……)。
启用可调整大小的BAR
如果你更深入地查看日志,你还会看到类似这样的条目:
|
|
这意味着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项目网站!