cannbot-dsl:基于昇腾 CANN 生态的复杂算子示例项目

用于学习和开发昇腾 NPU 复杂算子,快速参考 Ascend 950 的算子实现。项目提供 Flash Attention、Kimi Delta Attention、矩阵乘等示例,基于 CANNBot-DSL 生成,含测试与说明。【此简介由AI生成】

分支2Tags0
文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
2 个月前
1 个月前
2 个月前
2 个月前
1 个月前
1 个月前
1 个月前
2 个月前

CANNBot-DSL

基于 CANNBot-DSL 的 Ascend NPU 复杂算子示例集合。

📖 概述 · 📦 算子列表 · 📂 目录结构 · 🔥 更新日志 · 📜 许可证


概述

当前仓库中的 samples 使用 CANNBot 基于 CANNBot-DSL 生成,涵盖 VoxelConv、PointNet Set Abstraction、Flash Attention、Kimi Delta Attention 等复杂算子。本次开源样例代码,自定义开发、测试等功能将于近期发布,敬请期待。

项目面向 NPU ARCH 3510(Ascend 950PR / Ascend 950DT),详见 算子列表。

算子列表

算子 公式 文档
voxel_conv C[N,Co,Ho,Wo]=VoxelConv(x,filter)C[N, Co, Ho, Wo] = \text{VoxelConv}(x, filter) samples/voxel_conv
flash_attn O=softmax(QKT⋅scale)VO = softmax(QK^T \cdot scale) V samples/flash_attn
flash_kda Kimi Delta Attention prefill 融合算子 samples/flash_kda
flash_kda_metadata FlashKDA 调度 metadata 生成(AICPU) samples/flash_kda_metadata
fused_recurrent_kda_snapshot Kimi Delta Attention decode(1~8 token,状态快照) samples/fused_recurrent_kda_snapshot
matmul C[M,N]=A[M,K]@B[N,K]TC[M,N] = A[M,K] @ B[N,K]^T samples/matmul/matmul
quant_batch_matmul_mxfp8 C[M,N]=Dequant(A)[M,K]@Dequant(B)[N,K]TC[M,N] = Dequant(A)[M,K] @ Dequant(B)[N,K]^T samples/matmul/quant_matmul
grouped_matmul yi[mi,ni]=xi[mi,ki]×weighti[ki,ni]y_i[m_i,n_i] = x_i[m_i,k_i] \times weight_i[k_i,n_i] samples/grouped_matmul
pointnet_sa feat[K,Dout]=max⁡jMLP(points[K,j,Din])\text{feat}[K, D_{out}] = \max_{j} \text{MLP}(\text{points}[K, j, D_{in}]) samples/pointnet_sa
rms_norm y=x⋅rstd⋅γy = x \cdot rstd \cdot \gamma samples/rms_norm
kv_compress_epilog KV Cache 压缩、量化与按槽位原地更新 samples/kv_compress_epilog

目录结构

├── samples/            # 算子实现与使用说明
│   ├── voxel_conv/     # VoxelConv 卷积
│   ├── flash_attn/     # Flash Attention
│   ├── flash_kda/      # Kimi Delta Attention
│   ├── flash_kda_metadata/ # FlashKDA 调度 metadata(AICPU)
│   ├── fused_recurrent_kda_snapshot/ # KDA decode 状态快照
│   ├── matmul/         # 矩阵乘
│   │   ├── matmul/         # 非量化矩阵乘
│   │   └── quant_matmul/   # MXFP8 全量化矩阵乘
│   ├── grouped_matmul/ # 非量化分组矩阵乘
│   ├── pointnet_sa/    # PointNet Set Abstraction
│   ├── rms_norm/       # RmsNorm 归一化
│   └── kv_compress_epilog/ # KV Cache 压缩更新
├── test/               # 测试
│   ├── voxel_conv/
│   ├── flash_attn/
│   ├── flash_kda/
│   ├── flash_kda_metadata/
│   ├── fused_recurrent_kda_snapshot/
│   ├── matmul/
│   │   ├── matmul/
│   │   └── quant_matmul/
│   ├── grouped_matmul/
│   ├── pointnet_sa/
│   ├── rms_norm/
│   └── kv_compress_epilog/
├── figures/
└── README.md

🔥 最新动态

最新更新与历史记录详见 CHANGELOG.md。

相关信息

  • 许可证
  • 源文件头部包含完整的版权与许可声明,遵循 CANN Open Software License Agreement Version 2.0

项目介绍

用于学习和开发昇腾 NPU 复杂算子,快速参考 Ascend 950 的算子实现。项目提供 Flash Attention、Kimi Delta Attention、矩阵乘等示例,基于 CANNBot-DSL 生成,含测试与说明。【此简介由AI生成】

定制我的领域