英特尔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系统。
配置树莓派内核(无需重新编译!)
- 确保你安装的是全新的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 # 避免“奇怪的启动机制或文件系统” - 较旧的英特尔卡可能不会被Xe驱动自动识别,因此通过在
/boot/firmware/cmdline.txt中添加以下内容,强制探测所有连接的卡:1xe.force_probe=* - 重启:
sudo reboot
此时,你需要安装所用显卡的固件。
安装非自由固件
理想情况下,所有当前固件都包含在以下三个包之一中(使用 sudo apt install -y [包名] 安装):
firmware-intel-graphics用于英特尔firmware-amd-graphics用于AMDfirmware-misc-nonfree用于Nvidia
安装后,重启。如果显卡仍然没有输出任何信号,可能因为它太新,系统包中的固件版本过旧。可以用dmesg检查。
例如,对于我的B580,我收到以下信息:
|
|
我可以用以下命令手动下载更新的固件文件:
|
|
然后重启。
对于Alchemist系列显卡(例如A380、A750等),你可能需要将固件文件下载到/usr/lib/firmware/i915目录。
让桌面环境正常工作
使用我的B580时,我注意到桌面环境(labwc-pi)仍然没有自动启动。我卡在“闪烁光标”模式,不得不按Alt+F2进入控制台。
为了让桌面环境工作,我还需要手动编译Mesa,因为Pi OS中集成的版本目前不包含iris支持(Iris是Mesa中英特尔Arc的Gallium和Vulkan驱动名称……)。
启用Resizeable BAR
如果你深入查看日志,还会看到类似这样的条目:
|
|
这意味着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系统,而不仅仅是树莓派。
敬请关注,并确保关注你感兴趣的任何问题。