add 06-llama_cpp_adapt_nh.md
本仓库把 Triton 算子编译成可在 Nanhu FPGA E6 上执行的静态 RISC-V ELF,并将它和 固定 Linux/runtime 一起发布为一个完整 DDR bundle:
Triton spec -> E6 AOT + 自动 fence -> 静态 ELF -> QEMU/reference/loader 校验 -> 固定 Linux workspace bundle -> Nanhu runner -> E6
算子开发人员只维护 kernel、输入参数和 expected output。无需处理 DMA、driver ioctl、 ELF 装载、DDR 映射,也不得重编 Linux、driver 或 runner。
首次配置开发机:
git clone <nanhu-linux-ddr-url> cd nanhu-linux-ddr make operator-config # 编辑 .e6-aot.env,填写外部 Triton/LLVM/Buddy/GCC/QEMU 路径 make operator-setup # 安装 backend 并检查工具链与固定 SDK
仓库不捆绑大型或版本相关的 host 工具。.e6-aot.env 是稳定接口,路径可以由每位 开发者自行提供,也可以通过 E6_AOT_CONFIG=/path/to/team.env 使用团队配置。
.e6-aot.env
E6_AOT_CONFIG=/path/to/team.env
创建算子模板:
make operator-new NAME=vector_add SPEC="$PWD/operators/vector_add_spec.py"
日常构建和交付只有一条命令:
make operator SPEC="$PWD/operators/vector_add_spec.py"
默认名称从 spec 文件名推导,vector_add_spec.py 生成 vector_add.elf。需要发布别名时 才加 NAME=release-name。同一条命令可以反复执行,流程只刷新该算子的调试 build; staging 位于自动清理的事务目录,旧的最终 bundle 会保留到新 bundle 完整校验通过。
vector_add_spec.py
vector_add.elf
NAME=release-name
成功后只交付:
output/workspace-final/
这里已经包含固定 linux_base.bin、固定 runner、算子 ELF、module table、load plan 和 全部 sparse extents。不要单独复制或编辑其中任何文件。
linux_base.bin
make operator 自动完成:
make operator
fence rw,rw
e6-elf-runner --check
正式交付不要使用 --no-qemu、--no-asm 或 --no-loader-check。不要给最终 ELF 直接打补丁补 fence,fence 必须由 backend 生成并经过机器码审计。
--no-qemu
--no-asm
--no-loader-check
固定 Linux 合同:
path software-workspace-sdk/base/linux_base.bin size 6291456 bytes SHA256 8b6e13d3758e61cc828ce32871b548ebac453ad5eb815630430cc3dc05697fa1
上传 output/workspace-final 整个目录,将其中自己的 ddr-load.plan 交给 FPGA runtime。 服务器、远端目录和 uv_runN slot 由现场管理员提供,完整命令见 上传文档。
output/workspace-final
ddr-load.plan
uv_runN
Linux 启动并挂载 /workspace 后无需查 ELF 文件名:
/workspace
/workspace/bin/run-operator check /workspace/bin/run-operator
run-operator 自动选择 bundle 中唯一的业务 ELF,并排除 runtime smoke。最终验收需要 runner 返回 0、算子 actual/expected 一致,并出现:
run-operator
PASS: ELF completed on E6 through the syscall runtime and driver
QEMU PASS、--check PASS 或 /dev/e6npu0 存在,都不能单独证明 E6 已实际执行算子。
--check
/dev/e6npu0
算子开发人员使用:
make operator-config
make operator-setup
make operator-check
make operator-new NAME=...
make operator SPEC=... [NAME=...]
以下属于系统或工具链维护,不是日常算子接口:
make e6-aot ...
make MAINTAINER=1 verify-e6-elf-runner
make MAINTAINER=1 workspace-final
make MAINTAINER=1 workspace-sdk
系统维护 target 默认会拒绝普通调用。算子流程不会调用它们,也不会替换固定 linux_base.bin 或 runner。
tools/e6-triton-aot/
runtime/e6-elf-runner/
workspace/template/
software-workspace-sdk/
src/
board/
configs/
layout/
scripts/
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Nanhu Linux DDR + E6 Triton AOT
本仓库把 Triton 算子编译成可在 Nanhu FPGA E6 上执行的静态 RISC-V ELF,并将它和 固定 Linux/runtime 一起发布为一个完整 DDR bundle:
算子开发人员只维护 kernel、输入参数和 expected output。无需处理 DMA、driver ioctl、 ELF 装载、DDR 映射,也不得重编 Linux、driver 或 runner。
算子开发:统一入口
首次配置开发机:
仓库不捆绑大型或版本相关的 host 工具。
.e6-aot.env是稳定接口,路径可以由每位 开发者自行提供,也可以通过E6_AOT_CONFIG=/path/to/team.env使用团队配置。创建算子模板:
日常构建和交付只有一条命令:
默认名称从 spec 文件名推导,
vector_add_spec.py生成vector_add.elf。需要发布别名时 才加NAME=release-name。同一条命令可以反复执行,流程只刷新该算子的调试 build; staging 位于自动清理的事务目录,旧的最终 bundle 会保留到新 bundle 完整校验通过。成功后只交付:
这里已经包含固定
linux_base.bin、固定 runner、算子 ELF、module table、load plan 和 全部 sparse extents。不要单独复制或编辑其中任何文件。默认自动完成的检查
make operator自动完成:fence rw,rw;e6-elf-runner --check;正式交付不要使用
--no-qemu、--no-asm或--no-loader-check。不要给最终 ELF 直接打补丁补 fence,fence 必须由 backend 生成并经过机器码审计。固定 Linux 合同:
上传与板端运行
上传
output/workspace-final整个目录,将其中自己的ddr-load.plan交给 FPGA runtime。 服务器、远端目录和uv_runNslot 由现场管理员提供,完整命令见 上传文档。Linux 启动并挂载
/workspace后无需查 ELF 文件名:run-operator自动选择 bundle 中唯一的业务 ELF,并排除 runtime smoke。最终验收需要 runner 返回 0、算子 actual/expected 一致,并出现:QEMU PASS、
--checkPASS 或/dev/e6npu0存在,都不能单独证明 E6 已实际执行算子。角色边界
算子开发人员使用:
make operator-configmake operator-setupmake operator-checkmake operator-new NAME=...make operator SPEC=... [NAME=...]以下属于系统或工具链维护,不是日常算子接口:
make e6-aot ...make MAINTAINER=1 verify-e6-elf-runnermake MAINTAINER=1 workspace-finalmake MAINTAINER=1 workspace-sdk系统维护 target 默认会拒绝普通调用。算子流程不会调用它们,也不会替换固定
linux_base.bin或 runner。目录
tools/e6-triton-aot/runtime/e6-elf-runner/workspace/template//workspace模板和板端run-operatorsoftware-workspace-sdk/src/,board/,configs/,layout/scripts/output/workspace-final/详细文档