中文 | English
AscendOpGenAgent 是一个面向 Ascend NPU 的自动化算子生成与评测框架。本项目基于 Triton/AscendC 自动生成并验证高性能算子代码,旨在大幅提升 Ascend 架构下的算子开发效率与质量。
| 算子类型 | 模块 | 定位 | 核心能力 |
|---|---|---|---|
| Triton | AKG-Triton Agent | 单算子交互式生成 | 任务提取 → 代码生成 → 评测验证(精度对齐与性能测试) |
| Triton | Benchmark-Evaluator | 一键批量评测 | 执行指定 Benchmark 评测,自动总结并生成详细报告 |
| AscendC | Lingxi_code Agent | AscendC 单算子交互式生成 | 代码生成 → 评测验证(精度对齐与性能测试) |
| AscendC | Ascend-Benchmark-Evaluator | AscendC 算子一键批量评测 | 执行指定 Benchmark 评测,自动总结并生成详细报告 |
共享内核:AKG-Triton Agent、Benchmark-Evaluator两者底层共用代码生成 Agent,统一处理“代码生成 → 验证 → 性能测试”的核心工作流,确保生成逻辑的一致性与高复用性。
在运行本项目之前,请确保您的环境满足以下要求:
- Python 3.8+
- Ascend CANN 8.0+
- Triton Ascend
- PyTorch 2.0+
- Claude Code CLI (请确保已正确安装并配置)
- tilelang-ascend (参考https://github.com/tile-ai/tilelang-ascend/blob/ascendc_pto/README.md#method-3-compile-and-install-from-source 安装)
克隆本项目并配置 Claude Code 环境:
# 1. 克隆项目并进入目录
git clone https://github.com/your-repo/AscendOpGenAgent.git
cd AscendOpGenAgent
# 2. 配置 Claude Code(可选,如需自定义配置)
# Claude Code 会自动识别项目中的 .claude/CLAUDE.md 配置文件完成后,即可在项目目录中使用 Claude Code 进行开发。
本项目主要提供两个核心使用场景,请根据需求选择对应的 Agent 或 Skill。
适用于开发者需要快速生成、验证某个特定算子的 Triton 实现。
操作步骤:
- 在 AscendOpGenAgent 目录下配置 Agent和skills:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/triton-ascend-coder.md .claude/CLAUDE.md
mv skills/triton/* .claude/skills/- 进入 AscendOpGenAgent 目录,启动 claude:
claude- 输入算子生成 Prompt:
生成一个基于 Triton-Ascend 框架的 softmax 算子实现。目标设备架构为 ascend910b1,请将生成的代码文件输出至 /path/to/output/ 目录下。
执行流程:Agent 自动执行 Phase 0-5:参数确认 → 任务构建 → 算法设计 → 代码生成与验证(迭代) → 性能优化与验证(迭代) → 输出报告。
适用于批量评测算子的生成效果,支持单 NPU 串行或多 NPU 并行执行。
操作步骤:
- 在 AscendOpGenAgent 目录下创建
.claude目录并配置 Agent:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/triton-ascend-coder.md .claude/CLAUDE.md
mv skills/triton/* .claude/skills/- 进入 AscendOpGenAgent 目录,执行批量调度脚本:
单 NPU 串行模式:
cd /path/to/AscendOpGenAgent
bash utils/run_benchmark_triton.sh \
--benchmark-dir /path/to/KernelBench \
--level 1 \
--range 1-30 \
--npu 0 \
--output /path/to/output多 NPU 并行模式(推荐):
cd /path/to/AscendOpGenAgent
bash utils/run_benchmark_triton.sh \
--benchmark-dir /path/to/KernelBench \
--level 1 \
--range 1-30 \
--npu-list "0,1,2,3,4,5" \
--output /path/to/output参数说明:
--benchmark-dir: Benchmark 根目录路径(必填)--level: Level 编号,如 1, 2, 3, 4(必填)--range: 算子范围,如1-30(与--ids二选一)--ids: 指定算子编号列表,逗号分隔,如3,7,15(与--range二选一)--npu: 单 NPU 设备 ID,如 0(默认 0,与--npu-list互斥)--npu-list: 多 NPU 列表,逗号分隔,如0,1,2,3,4,5(与--npu互斥,优先级更高)--output: 输出目录(必填)
适用于开发者需要快速生成、验证某个特定算子的 AscendC 实现。
操作步骤:
- 在 AscendOpGenAgent 目录下配置 Agent 和 skills:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/ascend-kernel-developer.md .claude/CLAUDE.md
mv skills/ascendc/* .claude/skills/- 进入 AscendOpGenAgent 目录,启动 claude:
claude- 输入算子生成 Prompt:
生成一个基于 AscendC 框架的 softmax 算子实现。目标设备架构为 ascend910b2,请将生成的代码文件输出至 /path/to/output/ 目录下。
执行流程:Agent 自动执行:确认参数 → 提取任务描述 → 生成代码 → 验证精度与性能 → 输出最终报告。
适用于批量评测算子的生成效果,支持单 NPU 串行或多 NPU 并行执行。
操作步骤:
- 在 AscendOpGenAgent 目录下创建
.claude目录并配置 Agent:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/ascend-kernel-developer.md .claude/CLAUDE.md
mv skills/ascendc/* .claude/skills/- 进入 AscendOpGenAgent 目录,执行批量调度脚本:
单 NPU 串行模式:
cd /path/to/AscendOpGenAgent
bash utils/run_benchmark_ascendc.sh \
--benchmark-dir /path/to/NPUKernelBench \
--level 1 \
--range 1-30 \
--npu 0 \
--output /path/to/output多 NPU 并行模式(推荐):
cd /path/to/AscendOpGenAgent
bash utils/run_benchmark_ascendc.sh \
--benchmark-dir /path/to/NPUKernelBench \
--level 1 \
--range 1-30 \
--npu-list "0,1,2,3,4,5" \
--output /path/to/output参数说明:
--benchmark-dir: Benchmark 根目录路径(必填)--level: Level 编号,如 1, 2, 3(必填)--range: 算子范围,如1-30(与--ids二选一)--ids: 指定算子编号列表,逗号分隔,如3,7,15(与--range二选一)--npu: 单 NPU 设备 ID,如 0(默认 0,与--npu-list互斥)--npu-list: 多 NPU 列表,逗号分隔,如0,1,2,3,4,5(与--npu互斥,优先级更高)--output: 输出目录(必填)
关于 Triton 的相关数据,请参阅benchmarks/BASELINE_0408.md
关于 AscendC 的相关数据,请参阅benchmarks/BASELINE_0408.md
AscendOpGenAgent/
├── .gitignore
├── LICENSE
├── README.en.md
├── README.md
├── agents/ # Agent 定义目录
│ ├── AKG-triton.md # 主编排 Agent
│ ├── benchmark-scheduler.md
│ ├── kernelgen-workflow.md # 子 Agent(代码生成工作流)
│ ├── ascend-kernel-developer.md
│ └── performance-optimizer.md
├── benchmarks/ # 评测数据集存放目录
│ ├── KernelBench/
│ │ ├── level1/ # Level 1 测试用例 (100个)
│ │ ├── level2/ # Level 2 测试用例 (99个)
│ │ ├── level3/ # Level 3 测试用例 (52个)
│ │ └── level4/ # Level 4 测试用例 (20个)
│ └── NPUKernelBench/
│ └── level1/ # NPU KernelBench Level 1 测试用例 (31个)
└── skills/ # Skill 实现目录
├── ascendc_evalution/
├── ascend_benchmark_evaluator/
├── ascendc/
├── benchmark-evaluator/ # 批量评测 Skill
├── dsl_baseline_generation/
├── dsl_lowering/
├── functional_conversion/
├── kernel-designer/
├── kernel-generator/ # 代码生成 Skill
├── kernel-verifier/ # 验证与性能测试 Skill
├── latency-optimizer/
├── op-task-extractor/ # 任务提取 Skill
├── op_desc_generation/
└── reference_generation/
本项目采用 Apache 2.0 License 开源许可证。