📈 GH Trending Explorer 🎲 Surprise me

← all repos

luogantt / General-AI-Compiler

git clone https://github.com/luogantt/General-AI-Compiler.git

—

—
stars, 24h
—
stars, 7 days
+77
stars, 30 days · #2,920
77
★ total
2
forks · 0 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguagePython
License—
Created2026-10-07 (13d ago)
Last push3d ago
Watchers0
OwnerUser

Links

README excerpt
# General AI Compiler(GAC)
当前主分支:**`main`**(已合入 `lg/bevformer-full-ops`)。CUDA PTX 与 Vortex 共用一套 C++ MLIR
前端、图优化和算子语义,通过 `gac-compile --target=cuda` 或 `--target=vortex`
选择设备后端;每次编译生成一个目标的产物,不要求同时使用两种设备。
源码分层、后端接口与使用方式见 原生编译器架构。
合并保留两条开发历史;原分支 `lg/bevformer-cuda-ptx-full-ops`、
`lg/bevformer-vortex-full-ops` 及 tag `bevformer-base-mlir-cuda-ptx`、
`bevformer-base-mlir-vortex` 继续保留,作为合并前的版本参照。
Vortex 源码快照与复验记录见 版本存档。
**ONNX → MLIR → Vortex / CUDA 的主入口:原生 C++ MLIR 编译器。**
它直接把 ONNX ModelProto 导入注册的 `gac` Operations,使用真实 MLIR Pass 做
shape 推导、常量折叠、CSE、条件融合和布局验证,再由 C++ Lowering/Buffer 规划生成
Vortex 设备代码;小模型已完成 `VOLT → ELF → vxbin → C++ Runtime → SimX` 数值闭环。
完整 BEVFormer-tiny 固定 cold ONNX 已通过严格原生编译,生成 **1,548 个 dispatch**;
图像激活仍由生成的 Kernel 在运行时计算,常量几何在 MLIR Pass 中求值。完整
Vortex ELF/vxbin 已生成并核对全部 1,548 个入口;主机生成的机器码已完整执行
整网,三个输出与 PyTorch 参考对齐。完整 SimX 执行仍待验收,尚无物理设备 FPS,详见
整网验证记录。
官方 R101-DCNv2 / 200×200 / 四级 FPN 的适配单独记录在
BEVFormer-base 原生 MLIR 说明:完整 base 已生成
**3,224 个 dispatch** 的 native 主机共享库和 Vortex ELF/vxbin,并核对全部设备
入口。base 完整 CPU 数值验证已通过:3,224 个 dispatch 全部执行,三个输出与
PyTorch 参考对齐,见最终验证记录。
尚无整网 Vortex 执行或 30 FPS 结论。
原生 Vortex 路径新增可显式选择的 LMEM 分块、DXA 双缓冲与 TCU MatMul 模板,
由 C++ MLIR Lowering 生成设备指令。TCU 使用 TF32×3 分解与 FP32 累加,默认仍为
标量 FP32;新模板的正确性、周期收益和整网启用范围单独验证,不沿用旧 FFN 性能数据。
统一分支包含 原生 CUDA PTX 后端:
复用 C++ ONNX 导入、MLIR Pass 和算子/Buffer 规划,通过 NVVM 与 LLVM NVPTX
生成 PTX,C++ Runtime 调用 CUDA Driver JIT 和启动 Kernel。62 个小模型已在
RTX 3070 Ti Laptop 上完成数值验证;完整 base 已生成全部 3,224 个 CUDA dispatch,
并在该 GPU 上完整执行,三个输出通过 PyTorch 参考比对(固定输入的 FP32 cold
raw-head 路径)。显存采样最高约 2.11 GiB;预热后 3 次设备执行平均约 18.05 秒,
尚未达到 30 FPS,见完整 CUDA 验证记录。
上述为最初的标量 FP32 基线。后续已增加 C++ MLIR 的 CUDA shared-memory MatMul、
寄存器分块、Conv/DCNv2 通道复用、Softmax/LayerNorm 协作归约和独立 profiling。
优化组合完整执行 base,三个输出最大绝对误差约 `5.95e-5`;最终 `auto MatMul +
cooperative reduction + Conv 通道块8` 四次设备序列为 **6.426–6.439 秒**。
同轮标量为 18.279–45.033 秒,存在明显温度/频率变化,不据此承诺固定加速倍数或
持续 FPS。首次最快 4.20 秒与全部较慢测量都单独保留。配置、范围和证据见
原生 CUDA 性能优化。
没有将旧路径的 cuBLAS、Tensor Core 或 FFN 性能数字移用到本路径。
Vortex 同时完成 寄存器分块与 TCU 调用合并:
指定 FFN MatMul 的 DXA 模板在 SimX 上相对标量快约 2.175×;TCU 合并辅助调用相对
旧 TCU 快约 1.356×。这是单个投影的建模周期,不代表完整 Vortex 模型帧率。
旧 Python Graph 路径作为兼容实现保留;以下历史能力
与新原生路径的支持范围分别记录,不能混算。
## 历史 Python / HXP 与 FFN 路径
以下记录对应原有实现及其测试时间;上方 `native/` 的全模型编译与验收独立维护。
`lg/bevformer-vortex-full-ops` 分支新增按照 V6 十层架构实现的整图 Vortex 后端:现有 BEVFormer streaming Graph 的 33 类规范算子均可生成独立软件 MLIR Kernel,统一在一台 Vortex 上执行。包含全局 Buffer 复用、事件调度和原生 DType Runtime;完整拓扑的小尺寸模型已通过真实 MLIR 编译及 SimX 数值验证。真实 checkpoint 的生产 Profile 已编译为 `.vxbin`,生产尺寸输入的精度与速度仍待验证。
> 面向边缘推理的 AI 编译器与 Runtime 原型;当前生产闭环是固定 Profile 的 BEVFormer-tiny raw step 和 CUDA SM86,同时提供 tensor-level MLIR emitter、cuBLAS 混合 FFN、全 PTX FFN,以及两次 cuBLAS MatMul 配合两个 MLIR→PTX 融合 Kernel 的 `mlir-cublas-ptx-sm86` 生产候选。
GAC 的 CUDA 路径把模型配置、权重和静态计算图转换为可校验的 HXP 包,在 Runtime 中完成设备检查、显存规划、实现选择、NVRTC 编译和 CUDA 执行。逐元素、布局、Attention 与 BEV 专用算子由项目生成 CUDA;生产尺寸 FP32 Conv 和 MatMul 可分别选择 cuDNN 与 CuPy/cuBLAS。MLIR 侧有五条边界不同的路径:`mlir-linalg` 生成标准 Tensor/Linalg MLIR;`mlir-cuda-sm86` 用两次 cuBLAS MatM