# AIcompiler **Repository Path**: iloverust/aicompiler ## Basic Information - **Project Name**: AIcompiler - **Description**: 一个基于 MLIR 的通用编译器中端+后端平台,旨在替代 JVM、GraalVM、MSVC 和传统 LLVM 后端。集成 MLIR-AIR 与 Tawa(基于 arXiv:2510.14719 论文的异步引用抽象与自动 Warp 专业化),支持多后端(CPU/LLVM、SPIR-V/PoCL、NVIDIA PTX/CUDA) - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-25 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: aicompiler ## README # AIcompiler **一个基于 MLIR 的通用编译器中端+后端平台**,旨在替代 JVM、GraalVM、MSVC 和传统 LLVM 后端。集成 MLIR-AIR 与 Tawa(基于 arXiv:2510.14719 论文的异步引用抽象与自动 Warp 专业化),支持多后端(CPU/LLVM、SPIR-V/PoCL、NVIDIA PTX/CUDA)。 [![License](https://img.shields.io/badge/license-MulanPSL--2.0-blue.svg)](LICENSE) [![Build](https://img.shields.io/badge/build-xmake-green.svg)](xmake.lua) --- ## ✨ 核心特性 ### 🌍 多语言支持 - **原生支持**:C/C++、Rust、Kotlin、Java、Nim、V 等所有能生成 LLVM IR 的语言 - **统一编译**:通过 LLVM IR、MLIR 方言或 WebAssembly 作为统一入口 - **跨语言互操作**:统一 IR 表示,无缝混合编译多种语言 - **JVM 替代**:可直接编译 Java/Kotlin 字节码,无需 JVM 运行时 ### 🚀 性能优势 - **自动 GPU 加速**:基于 Tawa 算法自动识别并优化 GPU 内核 - **Warp 专业化**:自动分区生产者-消费者任务,充分利用现代 GPU(Hopper/Blackwell) - **多粒度流水线**:细粒度(CUDA 核心 + Tensor 核心)与粗粒度(跨迭代)自动流水线优化 - **异步引用(aref)**:简化 Warp 间通信,自动管理屏障与数据流 - **AOT 编译**:比 JVM/GraalVM 更快的启动时间和更低的内存占用 ### 🎯 目标后端 - **CPU**:通过 LLVM 生成高效原生代码,支持多线程与 SIMD - **SPIR-V/OpenCL**:通过 PoCL 支持便携式 GPU 计算 - **NVIDIA PTX**:针对 Hopper/Blackwell 架构优化,支持 TMA、WGMMA - **未来扩展**:AMD ROCm、Apple Metal、Vulkan ### 🧠 智能优化 - **任务感知分区**:自动分析计算图并分配到最优硬件单元 - **循环分布**:自动创建循环缓冲区管理跨分区依赖 - **AI 辅助调优**(规划中):集成 DeepSeek 自动搜索最优编译参数 ### 🔧 开发友好 - **模块化设计**:清晰的方言、Pass、运行时分层架构 - **现代构建系统**:xmake + cbuild-ng,支持多工具链 - **完整文档**:架构设计、集成指南、开发路线图 - **示例丰富**:从简单向量加法到复杂 FlashAttention 内核 --- ## 📦 项目结构 ``` AIcompiler/ ├── docs/ # 完整文档 │ ├── ARCHITECTURE.md # 架构设计 │ ├── QUICKSTART.md # 快速开始 │ ├── LLVM_INTEGRATION.md # LLVM/MLIR 集成指南 │ └── DEVELOPMENT_ROADMAP.md # 开发路线图 ├── examples/ # 示例程序 │ └── vector_add.mlir # 向量加法示例 ├── mlir/ │ ├── dialects/tawa/ # Tawa 方言定义(TableGen) │ │ ├── Dialect.td # 方言声明 │ │ ├── Types.td # 类型定义(ArefType、BufferType 等) │ │ ├── Attributes.td # 属性定义(分区、流水线深度等) │ │ └── Ops.td # 操作定义(aref、pipeline、barrier) │ └── passes/ # 编译器 Pass 实现 │ ├── TaskAwarePartitioning.cpp # 任务感知分区 │ ├── LoopDistribution.cpp # 循环分布 │ └── ArefLowering.cpp # aref 降低到目标后端 ├── runtime/ # 运行时库 │ ├── common/ # 统一 ABI │ ├── cpu/ # CPU 后端(线程池、调度器) │ ├── spirv/ # SPIR-V/OpenCL 后端 │ └── cuda/ # CUDA 后端(规划中) ├── backends/ # 目标特定代码生成 ├── src/cli/ # 命令行工具 │ ├── main.cpp # 主程序 │ └── commands.cpp # 命令实现(ingest/opt/lower/codegen/run) ├── scripts/ # 工具脚本 │ └── add_submodules.ps1 # 子模块管理 ├── third_party/ # 外部依赖(git submodule) │ ├── llvm-project/ # LLVM/MLIR │ ├── mlir-air/ # MLIR-AIR │ └── pocl/ # PoCL ├── xmake.lua # 构建配置(含 TableGen 规则) ├── cbuild-ng.json # 可复现构建配置 └── LICENSE # 木兰宽松许可证 v2 ``` --- ## 🚀 快速开始 ### 安装依赖 ```powershell # 安装 xmake powershell -c "irm https://xmake.io/psget.txt | iex" # 安装 LLVM/MLIR(推荐使用预编译版本) choco install llvm --version=18.1.8 # 设置环境变量 $env:LLVM_DIR = "C:\Program Files\LLVM\lib\cmake\llvm" ``` ### 构建项目 ```powershell # 配置 xmake f -m release # 构建 xmake -y # 运行 .\build\windows\x64\release\aicompiler.exe --help ``` ### 编译示例 ```powershell # 解析 MLIR 输入 aicompiler ingest examples/vector_add.mlir # 应用优化 Pass aicompiler opt examples/vector_add.mlir -o optimized.mlir # 降低到 CPU 后端 aicompiler lower optimized.mlir --target=cpu -o output.ll # 生成可执行文件 aicompiler codegen output.ll -o vector_add.exe # 运行 aicompiler run vector_add.exe ``` --- ## 🌟 应用场景 ### 1. 替代 JVM/GraalVM - **更快的启动时间**:AOT 编译,无 JIT 预热 - **更低的内存占用**:无运行时开销 - **自动 GPU 加速**:Java/Kotlin 并行流自动映射到 GPU ### 2. 高性能计算 - **大型语言模型**:FlashAttention-3/4 内核优化 - **矩阵运算**:GEMM 性能接近或超越 cuBLAS - **科学计算**:自动向量化与并行化 ### 3. 混合语言项目 - **统一编译**:Rust 核心 + Kotlin UI + C 算法库 - **无缝互操作**:统一 MLIR IR 表示 - **一致优化**:所有语言享受相同的优化管线 ### 4. 嵌入式与边缘计算 - **跨平台**:CPU、GPU、FPGA(通过 MLIR-AIR) - **资源高效**:精细的内存与计算调度 - **低延迟**:硬件级流水线优化 --- ## 📚 文档 - [架构设计](docs/ARCHITECTURE.md) - 整体架构与设计理念 - [快速开始](docs/QUICKSTART.md) - 详细的安装与使用指南 - [LLVM 集成](docs/LLVM_INTEGRATION.md) - LLVM/MLIR 集成方案 - [开发路线图](docs/DEVELOPMENT_ROADMAP.md) - 项目规划与进度 - [构建指南](docs/BUILD.md) - 构建系统详解 --- ## 🤝 贡献 欢迎贡献代码、文档或提出建议!请阅读 [贡献指南](CONTRIBUTING.md)(待创建)。 --- ## 📄 许可证 本项目采用 **木兰宽松许可证,第2版(MulanPSL-2.0)** 开源。 您可以自由地: - ✅ 使用本软件 - ✅ 修改本软件 - ✅ 分发本软件 - ✅ 用于商业目的 详见 [LICENSE](LICENSE) 文件或访问 [木兰开源许可证官网](https://license.coscl.org.cn/MulanPSL2)。 --- ## 🙏 致谢 - **LLVM/MLIR 项目**:提供强大的编译器基础设施 - **MLIR-AIR**:异构异步运行时支持 - **Tawa 论文**(arXiv:2510.14719):Warp 专业化算法 - **PoCL**:便携式 OpenCL 实现 --- ## 📧 联系方式 - **问题反馈**:[GitHub Issues](https://github.com/your-org/AIcompiler/issues) - **讨论交流**:[GitHub Discussions](https://github.com/your-org/AIcompiler/discussions) --- **AIcompiler** - 让编译器更智能,让代码跑得更快 🚀