在科研项目中部署FPGA加速卡是提升计算性能的常见需求。这次我们在Dell PowerEdge R750服务器上尝试安装Xilinx Alveo U200加速卡时,遇到了一个典型但容易被忽视的问题——设备无法被系统识别。经过排查发现,这是由于加速卡之前被固化了特定固件导致的。
这种情况在实际部署中并不少见,特别是当FPGA加速卡在不同项目或团队间流转使用时。很多工程师第一次遇到这种问题时往往会花费大量时间在驱动安装和系统配置上,而忽略了硬件固件状态这个根本原因。
我们的测试平台采用Dell PowerEdge R750服务器,这是一款2U机架式服务器,配备了:
特别需要注意的是,Alveo U200加速卡需要额外的8-pin PCIe辅助电源(AUX Power)。标准PCIe插槽只能提供75W功率,而U200最大功耗可达215W(插槽75W+辅助电源150W)。如果辅助电源未正确连接,虽然卡可能部分工作,但无法被完整识别。
我们选择了AlmaLinux 9.6作为操作系统,这是一个RHEL兼容发行版,内核版本为5.14.0-570.39.1.el9_6.x86_64。在开始安装前,需要确认以下基础组件:
bash复制# 确认系统基本信息
cat /etc/os-release
uname -r
# 检查必要的开发工具和内核头文件
sudo yum groupinstall "Development Tools"
sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
# 启用EPEL仓库
sudo yum install epel-release
注意:不同Linux发行版的内核头文件安装方式可能不同。在Ubuntu/Debian系统上应使用
apt install linux-headers-$(uname -r)。
Xilinx Runtime (XRT)是FPGA加速卡的软件栈核心。我们最初尝试安装XRT 2024.2版本,但遇到了内核模块编译错误:
bash复制error: too many arguments to function 'eventfd_signal'
eventfd_signal(irq_entry->event_ctx, 1);
这是由于较新Linux内核中eventfd_signal函数签名发生了变化。解决方法有两种:
我们选择了第二种方案,下载并安装XRT 2025.1:
bash复制sudo yum install -y ./xrt_202510.2.19.194_9.0-x86_64-xrt.rpm
source /opt/xilinx/xrt/setup.sh
XRT使用DKMS(Dynamic Kernel Module Support)来管理内核模块。安装后需要确认驱动状态:
bash复制# 检查已安装的DKMS模块
sudo dkms status
# 如果遇到模块不匹配问题,可以重新构建
sudo dkms remove xrt/2.19.194 --all
sudo dkms install xrt/2.19.194
# 确认驱动文件生成
ls -lh /lib/modules/$(uname -r)/extra/
正确的输出应该包含xclmgmt.ko.xz和xocl.ko.xz两个驱动模块文件。
Alveo U200需要多个固件组件协同工作:
安装命令很简单:
bash复制sudo yum install -y ./*.rpm
但关键在于安装后的验证步骤:
bash复制# 检查固件版本
sudo /opt/xilinx/xrt/bin/xbmgmt examine
正确加载驱动模块是FPGA能被识别的关键:
bash复制# 手动加载驱动(系统启动时会自动加载)
sudo modprobe xclmgmt
sudo modprobe xocl
# 验证驱动状态
lsmod | grep -E "xocl|xclmgmt"
# 检查设备节点
ls -la /dev/xclmgmt* /dev/dri/renderD*
正常情况下,应该能看到/dev/xclmgmt*和/dev/dri/renderD*设备节点。
当我们执行lspci -d 10ee:时,只看到了一个设备:
code复制b1:00.0 Serial controller: Xilinx Corporation Device 903f
而正常情况下应该显示两个设备:
code复制b1:00.0 Processing accelerators: Xilinx Corporation Device 5004
b1:00.1 Processing accelerators: Xilinx Corporation Device 5005
我们按照以下顺序进行了全面排查:
电源检查:
冷启动尝试:
bash复制sudo shutdown -h now
# 完全断电等待5分钟后重新上电
PCIe插槽检查:
固件状态检查:
bash复制sudo /opt/xilinx/xrt/bin/xbmgmt examine
经过以上排查,最终确定问题原因是FPGA卡处于"安全模式",设备ID被固定为903f。这种情况通常发生在:
根据AMD官方文档(参考71757号解决方案),我们需要将卡恢复到出厂状态:
.mcs或.bin结尾)bash复制sudo /opt/xilinx/xrt/bin/xbmgmt flash --update --shell xilinx_u200_gen3x16_xdma_base_2
重要提示:恢复过程中切勿中断电源或移除加速卡,否则可能导致卡无法使用。
成功恢复黄金镜像后,应该能看到正确的设备信息:
bash复制$ lspci -d 10ee:
b1:00.0 Processing accelerators: Xilinx Corporation Device 5004
b1:00.1 Processing accelerators: Xilinx Corporation Device 5005
$ sudo /opt/xilinx/xrt/bin/xbmgmt examine
...
Device(s) Present
[0000:b1:00.0] : xilinx_u200_gen3x16_xdma_base_2
进一步的验证可以运行简单的测试程序:
bash复制# 安装测试工具
sudo yum install xrt-tools
# 运行基础测试
/opt/xilinx/xrt/bin/xbutil validate
对于新的Alveo U200部署,建议按以下顺序操作:
当遇到问题时,可以参考以下资源:
对于中文用户,还可以参考: