You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions自托管运行器执行aocl命令出现DMA初始化等报错问题

故障排查与解决方案

该故障本质是GitHub Actions自托管运行器的执行环境与你本地交互式shell环境存在差异导致,可按照以下步骤逐一排查修复:

1. 检查运行器进程的用户权限

  • 访问Intel FPGA的DMA设备、执行MMD内存分配需要运行用户属于fpga用户组,且具备足够的内存锁定权限
  • 若你的自托管运行器是通过systemd服务部署,默认会使用独立的运行用户(通常为runner),该用户可能未加入fpga组,且内存锁定限制(memlock)远低于本地用户
  • 修复方案:
    • 将运行器用户加入fpga组:usermod -aG fpga 你的运行器用户名
    • 修改/etc/security/limits.conf添加如下配置,放开内存锁定限制:
      你的运行器用户名 hard memlock unlimited
      你的运行器用户名 soft memlock unlimited
      
    • 若为systemd部署的运行器,还需要在服务配置的[Service]段添加LimitMEMLOCK=infinity,重载systemd配置后重启运行器服务

2. 对齐FPGA运行时环境变量

  • 本地执行aocl命令正常是因为你的shell配置文件(.bashrc/.zshrc/.profile)已加载Intel FPGA SDK的环境变量,而自托管运行器作为非交互式进程不会主动加载这些配置
  • 修复方案可二选一:
    • 在Workflow的env段显式声明所有必要的FPGA环境变量,示例:
      env:
        INTELFPGAOCLSDKROOT: /opt/intelFPGA_pro/20.4/hld
        AOCL_BOARD_PACKAGE_ROOT: /opt/intelFPGA_pro/20.4/hld/board/a10_ref
        LD_LIBRARY_PATH: /opt/intelFPGA_pro/20.4/hld/host/linux64/lib:$LD_LIBRARY_PATH
      
    • 在所有执行FPGA相关操作的步骤前,先执行SDK的环境初始化脚本:source /opt/intelFPGA_pro/20.4/hld/init_opencl.sh(路径替换为你实际的SDK安装路径)

3. 排查设备资源与安全模块限制

  • 检查是否有本地后台进程长期占用FPGA设备资源,导致运行器进程无法获取DMA访问权限,可执行aocl diagnose查看设备状态
  • 若系统开启了SELinux/AppArmor,需确认运行器进程的安全上下文具备访问/dev/下FPGA设备节点、巨页内存的权限,可临时关闭安全模块验证是否为该问题导致
  • 若你使用容器化部署的自托管运行器,需要给容器添加--privileged参数,同时将FPGA设备节点、/dev/hugepages目录挂载到容器内

快速验证方法

你可以在Workflow最前面添加如下步骤,对比输出和本地执行的结果,快速定位差异点:

steps:
  - name: 环境校验
    run: |
      id
      ulimit -a
      echo $INTELFPGAOCLSDKROOT
      echo $LD_LIBRARY_PATH
      aocl list-devices

内容的提问来源于stack exchange,提问作者tgonzalez89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:36:05