
继一个15行补丁修复了树莓派(Raspberry Pi)上AMD显卡的GPU支持后,GitHub用户@mariobalanica近期发布了一个新补丁,成功为Nvidia显卡实现了类似功能,使得在树莓派5上连接并使用Nvidia独立显卡进行GPU加速成为可能。

如果你手头有树莓派和一块Nvidia显卡,可以按照以下步骤尝试编译和安装此驱动补丁。
在树莓派5上构建与安装驱动
由于该补丁仍在积极开发中,以下流程未来可能发生变化。
- 安装系统:使用树莓派镜像工具,将Pi OS 13 “Trixie” 刷入新的启动介质。
- 更新系统:启动树莓派后,首先运行以下命令确保系统为最新状态。
sudo apt update && sudo apt upgrade -y
- 切换内核:当前补丁仅在4K内核上有效,而树莓派默认运行16K内核。需编辑启动配置文件进行切换。
sudo nano /boot/firmware/config.txt
# 在文件末尾添加以下行:
kernel=kernel8.img
sudo reboot
- 下载驱动:从NVIDIA官网下载适用于ARM64架构的最新Linux驱动.run文件(例如版本580.95.05)。
- 安装驱动基础组件:运行.run文件但不构建内核模块。
sudo sh ./NVIDIA-Linux-aarch64-580.95.05.run --no-kernel-modules
- 克隆补丁分支:获取@mariobalanica修改后的开源内核模块代码。
cd ~/Downloads && git clone --branch non-coherent-arm-fixes https://github.com/mariobalanica/open-gpu-kernel-modules.git
- 编译与安装内核模块:进入目录并构建驱动模块,这个过程涉及到Linux驱动和内核模块的编译。
cd open-gpu-kernel-modules
make modules -j$(nproc)
sudo make modules_install -j$(nproc)
- 更新模块依赖:
sudo depmod -a
- 重启系统:
sudo reboot
显示输出问题
在测试中,使用NVIDIA A4000显卡时,DisplayPort接口无法向显示器输出图像。系统日志dmesg中没有报错,屏幕也非黑屏无信号状态。即使尝试在配置文件中注释掉集成显卡的叠加层(dtoverlay=vc4-kms-v3d)并重启,也未能解决问题。

尽管如此,无显示器(Headless)运行的树莓派依然能胜任大量计算任务,因此可以继续测试GPU加速计算功能。
GPU加速计算测试
为了获得最佳性能,建议将树莓派5的PCIe通道强制设置为Gen 3模式。
执行nvidia-smi命令可以正确识别到GPU信息:
jgeerling@cm5:~ $ nvidia-smi
Wed Nov 26 16:52:14 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05 Driver Version: 580.95.05 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA RTX A4000 Off | 00000001:01:00.0 Off | Off |
| 41% 31C P8 8W / 140W | 1MiB / 16376MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
为了测试GPU的AI推理加速能力,我们尝试使用llama.cpp。由于暂时未能快速配置好CUDA环境,转而使用Vulkan后端从源码编译llama.cpp进行测试。对于Nvidia显卡,使用CUDA通常性能更佳。
jgeerling@cm5:~/Downloads/llama.cpp $ ./build/bin/llama-bench -m models/Llama-3.2-3B-Instruct-Q4_K_M.gguf -n 128 -p 512,4096 -pg 4096,128 -ngl 99 -r 2
ggml_vulkan: Found 2 Vulkan devices:
ggml_vulkan: 0 = NVIDIA RTX A4000 (NVIDIA) | uma: 0 | fp16: 1 | bf16: 0 | warp size: 32 | shared memory: 49152 | int dot: 1 | matrix cores: NV_coopmat2
ggml_vulkan: 1 = V3D 7.1.10.2 (V3DV Mesa) | uma: 1 | fp16: 0 | bf16: 0 | warp size: 16 | shared memory: 16384 | int dot: 0 | matrix cores: none
build: 7cba58bbe (7169)

测试结果显示性能数据符合预期,但尚需在其他系统中通过CUDA和Vulkan对比验证,以准确评估A4000在树莓派平台上的实际效能。
总结与展望
此驱动补丁的意义不仅限于树莓派,它同样适用于许多官方尚未提供Nvidia显卡支持的ARM系统,极大地扩展了硬件兼容范围。
开发者@mariobalanica主要在RK3588开发板上构建和测试该补丁。理论上,RK3588的SoC性能更强、能效更高,且支持PCIe Gen 3 x4(树莓派5为Gen 3 x1),其表现可能优于树莓派5。
目前,进一步的测试仍在进行中,下一个优先目标是解决显示输出问题。希望解决方法不会过于复杂,无需重新编译内核。
|