Skip to content

wzzll123/AscendOpGenAgent

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

184 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AscendOpGenAgent

License

中文 | 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,统一处理“代码生成 → 验证 → 性能测试”的核心工作流,确保生成逻辑的一致性与高复用性。

快速开始

1. 环境要求

在运行本项目之前,请确保您的环境满足以下要求:

2. 安装与配置

克隆本项目并配置 Claude Code 环境:

# 1. 克隆项目并进入目录
git clone https://github.com/your-repo/AscendOpGenAgent.git
cd AscendOpGenAgent

# 2. 配置 Claude Code(可选,如需自定义配置)
# Claude Code 会自动识别项目中的 .claude/CLAUDE.md 配置文件

完成后,即可在项目目录中使用 Claude Code 进行开发。

3. 使用场景指南

本项目主要提供两个核心使用场景,请根据需求选择对应的 Agent 或 Skill。

3.1 Triton

场景一:单算子生成

适用于开发者需要快速生成、验证某个特定算子的 Triton 实现。

操作步骤

  1. 在 AscendOpGenAgent 目录下配置 Agent和skills:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/triton-ascend-coder.md .claude/CLAUDE.md
mv skills/triton/* .claude/skills/
  1. 进入 AscendOpGenAgent 目录,启动 claude:
claude
  1. 输入算子生成 Prompt:
生成一个基于 Triton-Ascend 框架的 softmax 算子实现。目标设备架构为 ascend910b1,请将生成的代码文件输出至 /path/to/output/ 目录下。

执行流程:Agent 自动执行 Phase 0-5:参数确认 → 任务构建 → 算法设计 → 代码生成与验证(迭代) → 性能优化与验证(迭代) → 输出报告。


场景二:Benchmark 批量评测

适用于批量评测算子的生成效果,支持单 NPU 串行或多 NPU 并行执行。

操作步骤

  1. 在 AscendOpGenAgent 目录下创建 .claude 目录并配置 Agent:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/triton-ascend-coder.md .claude/CLAUDE.md
mv skills/triton/* .claude/skills/
  1. 进入 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: 输出目录(必填)

3.2 AscendC

场景一:单算子生成 (Lingxi-code Agent)

适用于开发者需要快速生成、验证某个特定算子的 AscendC 实现。

操作步骤

  1. 在 AscendOpGenAgent 目录下配置 Agent 和 skills:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/ascend-kernel-developer.md .claude/CLAUDE.md
mv skills/ascendc/* .claude/skills/
  1. 进入 AscendOpGenAgent 目录,启动 claude:
claude
  1. 输入算子生成 Prompt:
生成一个基于 AscendC 框架的 softmax 算子实现。目标设备架构为 ascend910b2,请将生成的代码文件输出至 /path/to/output/ 目录下。

执行流程:Agent 自动执行:确认参数 → 提取任务描述 → 生成代码 → 验证精度与性能 → 输出最终报告。


场景二:Benchmark 批量评测 (Ascend-Benchmark-Evaluator)

适用于批量评测算子的生成效果,支持单 NPU 串行或多 NPU 并行执行。

操作步骤

  1. 在 AscendOpGenAgent 目录下创建 .claude 目录并配置 Agent:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/ascend-kernel-developer.md .claude/CLAUDE.md
mv skills/ascendc/* .claude/skills/
  1. 进入 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

关于 Triton 的相关数据,请参阅benchmarks/BASELINE_0408.md

AscendC

关于 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 开源许可证。

About

Ascend operator generation

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 93.4%
  • C++ 5.4%
  • Shell 1.2%