本仓库对应赛题 Proj57 任务一(SG2002 + TPU),提供在 SG2002(Milk-V Duo S) 上运行 ACT TPU 推理所需的补丁、用户态程序、部署模型与评测记录。
不包含:完整 StarryOS 内核源码、交叉工具链、WiFi 驱动、VPSS 实验线、量化 sweep 中间产物。
sg2002-act-starryos/
├── README.md
├── patches/ # 内核有效补丁(DMA / memstat / TPU / ION)
│ ├── README.md
│ ├── axplat-riscv64-sg2002/ # 64 MB ION carveout 等平台配置
│ └── starryos-sg2002-dev/ # 覆盖到上游内核的修改文件
├── scripts/build_kernel.sh # 构建已打补丁的上游内核
├── deploy/cpp_cvi_sg2002/ # ACT CVI 推理程序(仅标准 act_cvi_infer)
├── config/act_params.json
├── data/
│ ├── eval_manifest.csv
│ └── videos/... # 666 帧评测图像(LFS)
├── bin/sg2002/act_cvi_infer # 预编译推理二进制
├── artifacts/sg2002_cvimodel/ # 唯一部署模型(decoder_last_linear2_bf16)
└── docs/evaluation/ # Proj57 任务一评测报告与日志
dist/sg2002-act-min/ 由 package_sg2002.sh 本地生成,不纳入 Git。
| 模块 | 路径 | 说明 |
|---|---|---|
| SDMMC DMA | patches/.../sg200x-bsp/src/sdmmc/ |
SDHCI ADMA2 修复 |
| 块设备策略 | patches/.../arceos/modules/axdriver/src/drivers.rs |
ADMA2 探针 |
| 内存统计 | patches/.../core/src/task/memstat.rs |
VmHWM |
| procfs | patches/.../api/src/vfs/proc.rs |
/proc 内存字段 |
| TPU / ION | patches/.../api/src/vfs/dev/tpu/, ion/ |
NPU 与 DMA buffer |
| ION carveout | patches/axplat-riscv64-sg2002/axconfig.toml |
64 MB 预留 |
export TPU_SDK_ROOT=/path/to/tpu-sdk-sg200x
export SG2002_TOOLCHAIN_PREFIX=/path/to/riscv64-unknown-linux-musl-
deploy/cpp_cvi_sg2002/build_sg2002.sh
deploy/cpp_cvi_sg2002/package_sg2002.shcd dist/sg2002-act-min
./run_sg2002.sh eval| 属性 | 值 |
|---|---|
| 策略 | decoder_last_linear2_bf16 |
| 路径 | artifacts/sg2002_cvimodel/act_sg2002_decoder_last_linear2_bf16.cvimodel |
| 大小 | 50 MB |
| 真机 VmHWM | ~54 MB |
| 均摊 wall-clock | ~111 ms(666 帧) |
| 文档 | 说明 |
|---|---|
docs/evaluation/Proj57任务一.md |
任务一 中期汇报 |
docs/evaluation/Proj57任务一.docx |
Word 版 |
docs/evaluation/OPEN_LOOP_SG2002_vs_QEMU_REPORT.md |
与 QEMU 路线对比 |
任务三(QEMU + CPU)见姊妹仓库:Maxye112/act-starryos-qemu-infer。
- 上游 StarryOS SG2002 内核源码
- Milk-V / Xuantie 交叉工具链(
riscv64-linux-musl-x86_64) - CVITEK
tpu-sdk-sg200x act_finetuned_fp32.onnx与 TPU-MLIR 环境(仅重导出模型时需要)
详细说明见 docs/BUILD.md、docs/DMA.md。