本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| Files | Last commit | Last update |
|---|---|---|
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
sfag ut revise Co-authored-by: tea-moon<liujingru10@huawei.com> # message auto-generated for no-merge-commit merge: !13251 merge ut_revise into master sfag ut revise Created-by: teamoon Commit-by: tea-moon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13251 | 1 month ago | |
1 | 1 month ago | |
docs(op_graph): normalize product names in header comments Co-authored-by: zzzzzzyf_<zhouyunfei10@huawei.com> # message auto-generated for no-merge-commit merge: !12837 merge master into master docs(op_graph): normalize product names in header comments Created-by: zzzzzzyf_ Commit-by: zzzzzzyf_ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#5647](https://gitcode.com/cann/ops-transformer/issues/5647) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 因修改注释,不涉及代码 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 随代码自动更新 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12837 | 1 month ago | |
feat: 新增 GroupedMatmulSwigluQuantWeightNzV3 算子及 aclnn/torch 接口 Co-authored-by: zhoushaolong<zhoushaolong3@huawei.com> # message auto-generated for no-merge-commit merge: !11903 merge feature/gmm-swiglu-quant-weight-nz-v3 into master feat: 新增 GroupedMatmulSwigluQuantWeightNzV3 算子及 aclnn/torch 接口 Created-by: zhoushaolong Commit-by: zhoushaolong Merged-by: cann-robot Description: ## 描述 新增 GroupedMatmulSwigluQuantWeightNzV3 算子:融合 GroupedMatmul、MXFP8 反量化、SwiGLU 与 MXFP8 量化的 weight NZ 特化版本,直接接收 FRACTAL_NZ 格式 weight,当前支持 Ascend 950PR/Ascend 950DT 单 Tensor MXFP8 场景(swigluMode 当前仅支持 2)。 相对 V2 接口的主要扩展: - 新增 SwiGLU 计算参数 swigluMode、clampLimit、gluAlpha、gluBias(mode 2:前半部分 clamp 后执行带 alpha 的 SiLU,后半部分 clamp 加 bias 作线性分支,逐元素相乘) - 新增 MX 量化参数 roundMode、scaleAlg、dstTypeMax 主要交付内容: - op_api:aclnnGroupedMatmulSwigluQuantWeightNzV3 两段式接口(GetWorkspaceSize + 执行) - op_host:算子注册、infershape、tiling(通用 + arch35 tensor api tiling) - op_kernel:arch35 MXFP8 tensor api kernel(含 apt 适配) - torch_extension:grouped_matmul_swiglu_quant_v2 torch 扩展(csrc + python 绑定) - 公共 cgmct:epilogue 支持 V3 SwiGLU 参数与多种 scale 算法(cuBLAS 对齐、动态 dtype 范围),yScale 类型化为 E8M0 并按有效分组紧凑拷贝 - docs / example:aclnn 接口文档、torchapi 文档、README 与菜单更新、arch35 调测示例 ## 关联的Issue - 关联Issue #5552 ## 测试 新增 UT: - tests/ut/op_api/test_aclnn_grouped_matmul_swiglu_quant_weight_nz_v3.cpp(含用例 csv) - tests/ut/op_host/test_grouped_matmul_swiglu_quant_weight_nz_v3_route_tiling.cpp(含 tensor api gate 用例说明) ## 文档更新 新增 docs/aclnnGroupedMatmulSwigluQuantWeightNzV3.md 与 docs/torchapi_grouped_matmul_swiglu_quant_v2.md;更新 README.md、docs/zh/menu_torch_api.md、docs/zh/torch_api_list.md。 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11903 | 1 month ago | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
feat: add UT-ChunkLocalCumsumV4 operator and fix review issues Co-authored-by: Griffin_Liu<liuguofeng@tsingmao.com> # message auto-generated for no-merge-commit merge: !12879 merge UT-ChunkLocalCumsumV4 into master feat: add UT-ChunkLocalCumsumV4 operator and fix review issues Created-by: Griffin_Liu Commit-by: Griffin_Liu Merged-by: cann-robot Description: Backgroud(背景信息) 新需求的功能是什么 新增算子 MIChunkLocalCumsumV4,在时间轴上对每个 chunk 内部做前缀和,每个 chunk 边界重新开始;配合变长批处理时,也必须在每条序列的边界处重新开始。 out[i] = sum_{j<=i} in[j] # j、i 位于同一 chunk 内 算子接口: 输入 input:[1, tokenNum, headNum],FP32,各序列首尾相接扁平排布(vLLM/GVA 风格) 输入 cu_seqlens:[seqNum + 1],INT64,累积序列长度 输出 output:[1, tokenNum, headNum],FP32 属性 chunkSize:Int;cuSeqlenDict:ListInt 解决了什么问题 DeepSeek-V3 系 block attention 以及一系列 chunked / linear attention 模型,在 block 内部做注意力或状态递推之前,需要对每 chunk 内的 token 做因果前缀和。目前该步骤只能在模型中由框架侧多个算子组合实现,或者退化为通用 Cumsum + 手工切片,带来两个问题: 无法表达变长语义。通用 Cumsum 沿整条 tokenNum 轴累加,而此处要求在每个序列边界处重置。用 cu_seqlens 描述变长批处理时(batch 内各序列长度不等),需要在 Host 侧逐序列切片、逐序列下发,下发次数与序列数成正比,小序列场景开销显著。 仓内无适用算子。经检索,本仓现有相关能力均不满足: 已有算子 不适用的原因 experimental/mamba/mamba2_chunk_cumsum Mamba2 专用,I/O 为 BCLH 布局(C*L 为 padding 后长度),且输出为 dtout/dacs/dacs_chunk 三个语义固定的张量,非通用的 chunk 内前缀和 attention/chunk_kda_fwd/op_kernel/kda_gate_cumsum_kernel.h 为 KDA 门控算子的内部 kernel 片段,未作为独立算子对外提供,且耦合门控逻辑 此外,一般 chunk cumsum 实现通常假设序列长度是 chunkSize 的整数倍;而变长场景下会出现长度不足 chunkSize 的残缺尾 chunk,本算子对这一分支做了显式处理。 Benefit / Necessity (价值/作用) 价值 将「逐序列切片 + 逐序列下发」的 Host 侧开销收敛为单次下发:Tiling 阶段一次性把全部 chunk 展开为扁平任务,Kernel 通过 cu_seqlens 自行定位每个 chunk 所属序列及在序列内的偏移,不需要 Host 侧做任何切片。 Kernel 采用 Hillis-Steele 扫描,每 chunk 为 O(log chunkSize) 条向量指令,而非 O(chunkSize);同时支持以 CHUNKS_PER_CORE 个 chunk 为一组批量处理,整组共用一次连续 DataCopy,提升 910B 上的 Vector 利用率。 显式支持零长度序列、残缺尾 chunk、跨序列边界的 chunk 组等边界场景,避免上层重复实现。 应用场景 DeepSeek-V3 系 block attention 的 block 内因果前缀和。 其余 chunked / linear attention(chunked delta rule、gated delta rule、KDA 等)中 chunk 内的状态递推前置步骤。 vLLM / GVA 风格 Prefill 与 Chunked-Prefill 场景,batch 内序列长度不齐、且存在长度远小于 chunkSize 的短序列。 产品支持:Ascend 910B(ascend910b)。 Design(设计方案) 接口设计 输入 input : [1, tokenNum, headNum] FP32 输入 cu_seqlens : [seqNum + 1] INT64 输出 output : [1, tokenNum, headNum] FP32 属性 chunkSize : Int 属性 cuSeqlenDict : ListInt 采用 [1, N, H] 扁平布局而非 [B, T, H]:变长批处理下 batch 维度无法表达不等长的序列,扁平 + cu_seqlens 是 vLLM/GVA 的事实标准,也便于 Kernel 侧做连续搬运。 Tiling 设计 chunk 展开:遍历 cu_seqlens,对每条序列 s 计算 curSeqlen = cu_seqlen[s+1] - cu_seqlen[s] curChunkNum = ceil(curSeqlen / chunkSize) 得到该序列的 chunk 数,累加得到全局 chunk 总数 totalChunkNum。 关键数据结构 curChunkNumDict:存放的是 chunk 数量的前缀和(第 b 项 = 覆盖序列 0..b 的累计 chunk 数),而非每 batch 的 chunk 数: total = 0 for s in 0 .. seqNum-1: total += ceil((cu_seqlen[s+1] - cu_seqlen[s]) / chunkSize) curChunkNumDict[s] = total # 前缀和,非 per-batch 计数 这样 Kernel 侧只需沿该数组单调推进即可定位任意全局 chunk 所属的序列,避免从零重扫 cu_seqlens,整体为 O(chunkNum + seqNum) 而非 O(chunkNum × seqNum)。该字段为定长数组,长度 128,对应最大 batch 数。 TilingKey 分档(供 Kernel 选择扫描块大小): headNum > 16 -> key 1 8 < headNum <= 16 -> key 2 headNum == 8 -> key 3 其他 -> key 4 BlockDim = min(totalChunkNum, aivNum),短负载场景不拉起空闲核。 Workspace:userWorkspaceSize = 0,仅申请 GetLibApiWorkSpaceSize() 返回的系统 workspace。 Kernel 设计 任务划分:以 CHUNKS_PER_CORE 个 chunk 为一组(Process<1> / Process<2>,与 TilingKey 绑定)。每组打包为 struct ChunkInfo { int32_t batch; // 所属序列 int32_t pre_num; // 该序列之前的累计 chunk 数 int32_t chunk_idx_in_batch; // 序列内的 chunk 下标 bool valid; // 末组空槽标记 }; 组内一次性解析完毕,整组落在同一个 UB tile 内,因此规整场景下每 chunk 的 I/O 退化为一次连续 DataCopy。每组内各 chunk 的地址与长度按下式计算: pre_sums[i] = cu_seqlen[batch] cur_seqlen = cu_seqlen[batch+1] - pre_sums[i] io_offsets[i] = chunk_idx_in_batch * chunkSize * headNum + pre_sums[i] * headNum handle_lens[i] = min(chunkSize, cur_seqlen - chunk_idx_in_batch * chunkSize) compute_lens[i] = (handle_lens[i] + 1) / 2 * 2 扫描算法(Hillis-Steele): for stride in {1, 2, 4, ...}: Add(out[stride ..], out[0 ..], out[stride ..]) # 一次覆盖全部 headNum 通道 每个向量指令一次处理 (compute_lens - stride) * headNum 个元素,每 chunk 共 O(log chunkSize) 条指令。compute_lens 向上取偶,保证成对加法的算子在时间维上对齐。 扫描步数控制:m_ratio 在 headNum >= 32 时为 MAX_CHUNK_SIZE / 2,否则为 MAX_CHUNK_SIZE;实际步数取 loop_count = compute_lens > m_ratio ? compute_lens / 2 : compute_lens 在 head 数偏大、UB 容量与指令发射带宽成为瓶颈的场景下,以更少的指令数完成扫描。 head 维对齐:扫描在带 stride 的布局上进行,要求每行 headNum 是 8 个 float(32B)的整数倍。NeedHeadPadding() 检测非对齐场景,此时在 load/store 两侧改用 DataCopyPad(DataCopyExtParams 行=行数、块长=headNum * sizeof(float)、rightPadding = AlignUp8(headNum) - headNum),UB 内布局补齐至 GetHeadStride() 行,而 GM 侧仍只读写真实的 headNum 列。对齐路径保留普通 DataCopy,完全跳过 pad/unpad。 规整快路径:以 all_compute_num == N * chunkSize 识别「整组均为满 chunk」的场景,折叠为「一次 DataCopy 入 → 对整组做一次扫描 → 一次 DataCopy 出」,省略逐 chunk 偏移运算;不满足该条件时走逐 chunk 搬运的通用路径。 UB 预算:两条 double-buffer 队列(inputQ / outputQ),各 2 × 64 × 32 × 4B = 16KB,承载 MAX_CHUNK_SIZE (64) × MAX_HEAD_NUM (32) 个 float。 边界场景: cu_seqlens 中存在零长度序列(cu_seqlen[s+1] == cu_seqlen[s])时跳过,不产生除零或负长度。 残缺尾 chunk:由上面的 handle_lens 计算覆盖。 chunk 组跨越序列边界:由上面的逐 chunk io_offsets 覆盖。 末组中的无效空槽:以 valid = false 标记,不参与计算与搬运。 交付件规划 按标准算子交付件组织(参考 attention/chunk_gated_delta_rule/): attention/mi_chunk_local_cumsum_v4/ ├── op_host/ │ ├── mi_chunk_local_cumsum_v4_def.cpp # 算子定义 │ ├── mi_chunk_local_cumsum_v4_tiling.cpp # Tiling 实现(文件名须含 _tiling) │ ├── mi_chunk_local_cumsum_v4_tiling.h # TilingData 定义 │ └── CMakeLists.txt ├── op_kernel/ │ ├── mi_chunk_local_cumsum_v4.cpp │ ├── mi_chunk_local_cumsum_v4.h │ ├── mi_chunk_local_cumsum_v4_tiling_data.h │ └── mi_chunk_local_cumsum_v4_tiling_key.h ├── op_graph/mi_chunk_local_cumsum_v4_proto.h ├── docs/aclnnMIChunkLocalCumsumV4.md ├── examples/test_aclnn_mi_chunk_local_cumsum_v4.cpp ├── CMakeLists.txt ├── README.md └── tests/test_mi_chunk_local_cumsum_v4.py 原型实现已基于 AclNNInvocation/ 独立 aclnn 单算子工程完成 910B 上板验证,与 PyTorch 参考实现比对通过;正式提 PR 前将按上述结构改造。 精度与测试 PyTorch 参考实现提供两种等价形式互验:逐 chunk cumsum(dim=0);以及「上三角全 1 矩阵 @ chunk 数据」。 输入取 logsigmoid(rand(...)),使 64 步累加后的部分和保持在数值合理区间。 精度比对采用绝对误差与相对误差(rms(diff) / rms(ref))双指标,对照生态算子开源精度标准。 泛化用例:等长稠密序列(覆盖快路径)、长度不能被 chunkSize 整除(覆盖残缺尾 chunk)、headNum 非 8 的倍数如 12(覆盖 DataCopyPad 路径)、非等长序列含零长度序列、totalChunkNum < aivNum。 1. **run.sh 硬编码个人路径问题**:原脚本在第 46 行无条件执行 export ASCEND_HOME_DIR=/mnt/zas/Ascend/ascend-toolkit/ latest,覆盖了上方已有的自动探测逻辑($HOME/Ascend/... 或 /usr/local/Ascend/...),导致其他环境下脚本指向不存在的 目录。本次删除该硬编码行,保留自动探测逻辑,同时尊重外部环境变量 ASCEND_HOME_DIR 的预设值。 2. **tiling 越界写风险问题**:mi_chunk_local_cumsum_v4.cpp 中 seqNum = shape_cu_seqlens.GetDim(0) - 1 完全由输入决 定且未做上限校验,而 curChunkNumArray 固定为 128(TilingData 的 curChunkNumDict 同样只有 128 个槽)。当 cu_seqlens 长度 > 129 时会发生数组越界写,损坏 host 侧内存。本次在使用该数组前增加显式校验:seqNum > 128 时通过 OP_LOGE 打印错误并返回 ge::GRAPH_FAILED,避免静默越界。 See merge request: cann/ops-transformer!12879 | 1 month ago | |
ffn_worker_batching修复文档问题&补充蓝驱ttk用例 Co-authored-by: cpy_123456<chenpengyi@huawei.com> # message auto-generated for no-merge-commit merge: !13197 merge cpy_929 into master ffn_worker_batching修复文档问题&补充蓝驱ttk用例 Created-by: cpy_123456 Commit-by: cpy_123456 Merged-by: cann-robot Description: ## 描述 本 PR 主要为 ffn_worker_batching 的 TTK 测试补充与修复用例支撑能力:在 tests/assets 中新增 TTK 兼容适配层与 GEIR 辅助重定位能力,重写 golden.py 中 Torch 用例执行配置与 RECV 描述符重发布逻辑,并新增 worker 预加载引导模块;同时 examples/test_aclnn_ffn_worker_batching_v2.cpp 仅为版权年份更新与指针声明风格调整,无业务逻辑变化。 主要改动 新增 TTK 兼容适配模块 ttk_compat.py: 通过 install_graph、install_geir、adapt_geir_source、remember_graph_state 等函数替换 TTK 私有入口(_compile_model_aclgraph、_render_template、write_case_config、_build_compile_cmd),在不修改 TTK 源码的前提下为 FFN 提供 ACL graph 重放与 GEIR 重定位支持,并对不支持的签名/模板直接报错。 新增 GEIR 辅助重定位头文件 ffn_geir_relocations.h: 定义 RelocateInput 及 input_relocations、auxiliary_buffers,按配置将辅助缓冲拷入 HBM 并把设备地址写回输入字节,供 TTK GEIR 可执行文件解析二级指针。 改造 golden.py 的 Torch 用例规格 TorchFfnWorkerBatchingTestSpec: 移除原先对 need_schedule != 0 的限制,新增 _configure_torch_execution 选择 eager/ACL graph 执行模式,并新增 npu_graph_before_run/npu_graph_after_run 在每次编译调用前后就地恢复描述符与 header、校验描述符是否被消费。 优化 golden.py 的数据生成与比对逻辑: _generate_group_list 改为基于 numpy 分块求 run 边界生成分组,AclnnFfnWorkerBatchingTestSpec 的 gather 循环改为按约 16 MiB 分块向量化写入,_numeric_samples 对 FP8 token 改为在 FP32 采样后按目标 dtype 原生舍入转换。 新增 worker 引导模块 _ffn_ttk_worker_bootstrap.py 与入口 _run_ttk_with_installed_package: forkserver 导入期仅用标准库,借助 os.register_at_fork 在子进程 fork 后再导入已安装的 cann_ops_transformer 并校验包路径,避免在 forkserver 中初始化 NPU 状态污染后续 worker。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5729 ## 测试 david 冒烟 蓝区ttk ## 文档更新 docs/zh/menu_aclnn_api.md ffn/ffn_worker_batching/README.md ffn/ffn_worker_batching/docs/aclnnFfnWorkerBatching.md ffn/ffn_worker_batching/docs/aclnnFfnWorkerBatchingV2.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13197 | 1 month ago | |
feat: 新增 GroupedMatmulSwigluQuantWeightNzV3 算子及 aclnn/torch 接口 Co-authored-by: zhoushaolong<zhoushaolong3@huawei.com> # message auto-generated for no-merge-commit merge: !11903 merge feature/gmm-swiglu-quant-weight-nz-v3 into master feat: 新增 GroupedMatmulSwigluQuantWeightNzV3 算子及 aclnn/torch 接口 Created-by: zhoushaolong Commit-by: zhoushaolong Merged-by: cann-robot Description: ## 描述 新增 GroupedMatmulSwigluQuantWeightNzV3 算子:融合 GroupedMatmul、MXFP8 反量化、SwiGLU 与 MXFP8 量化的 weight NZ 特化版本,直接接收 FRACTAL_NZ 格式 weight,当前支持 Ascend 950PR/Ascend 950DT 单 Tensor MXFP8 场景(swigluMode 当前仅支持 2)。 相对 V2 接口的主要扩展: - 新增 SwiGLU 计算参数 swigluMode、clampLimit、gluAlpha、gluBias(mode 2:前半部分 clamp 后执行带 alpha 的 SiLU,后半部分 clamp 加 bias 作线性分支,逐元素相乘) - 新增 MX 量化参数 roundMode、scaleAlg、dstTypeMax 主要交付内容: - op_api:aclnnGroupedMatmulSwigluQuantWeightNzV3 两段式接口(GetWorkspaceSize + 执行) - op_host:算子注册、infershape、tiling(通用 + arch35 tensor api tiling) - op_kernel:arch35 MXFP8 tensor api kernel(含 apt 适配) - torch_extension:grouped_matmul_swiglu_quant_v2 torch 扩展(csrc + python 绑定) - 公共 cgmct:epilogue 支持 V3 SwiGLU 参数与多种 scale 算法(cuBLAS 对齐、动态 dtype 范围),yScale 类型化为 E8M0 并按有效分组紧凑拷贝 - docs / example:aclnn 接口文档、torchapi 文档、README 与菜单更新、arch35 调测示例 ## 关联的Issue - 关联Issue #5552 ## 测试 新增 UT: - tests/ut/op_api/test_aclnn_grouped_matmul_swiglu_quant_weight_nz_v3.cpp(含用例 csv) - tests/ut/op_host/test_grouped_matmul_swiglu_quant_weight_nz_v3_route_tiling.cpp(含 tensor api gate 用例说明) ## 文档更新 新增 docs/aclnnGroupedMatmulSwigluQuantWeightNzV3.md 与 docs/torchapi_grouped_matmul_swiglu_quant_v2.md;更新 README.md、docs/zh/menu_torch_api.md、docs/zh/torch_api_list.md。 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11903 | 1 month ago | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
fix(mc2): 修复alltoallvgmm先用后判缺陷并扩容GMM数组支持epWorldSize=256 Co-authored-by: huangshuai59<huangshuai59@huawei.com> # message auto-generated for no-merge-commit merge: !12952 merge fix_issue into master fix(mc2): 修复alltoallvgmm先用后判缺陷并扩容GMM数组支持epWorldSize=256 Created-by: huangshuai59 Commit-by: huangshuai59 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5482 https://gitcode.com/cann/ops-transformer/issues/5481 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12952 | 1 month ago | |
fix(block_attention_residuals_grad): kimik3反向算子增加输入shape约束 Co-authored-by: zzzzzzyf_<zhouyunfei10@huawei.com> # message auto-generated for no-merge-commit merge: !13210 merge master into master fix(block_attention_residuals_grad): kimik3反向算子增加输入shape约束 Created-by: zzzzzzyf_ Commit-by: zzzzzzyf_ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> kimik3反向算子增加输入shape约束 B >= 64 2048 <= H <= 50w ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#5738](https://gitcode.com/cann/ops-transformer/issues/5738) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13210 | 1 month ago | |
[Fix] 修正MoeTokenPermuteWithEpGrad range 长度错误时的返回值 Co-authored-by: fazhenyao<fazhenyao@h-partners.com> Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !13194 merge codex/moe-ep-grad-range-master into master [Fix] 修正MoeTokenPermuteWithEpGrad range 长度错误时的返回值 Created-by: fazhenyao123 Commit-by: fazhenyao;KaranocaVe Merged-by: cann-robot Description: ## 关联 Issue - [Issue #4540](https://gitcode.com/cann/ops-transformer/issues/4540) ## 问题 MoeTokenPermuteWithEpGrad 在 range 属性长度非法时,tiling 初始化只记录错误并直接返回,但调用方没有感知初始化失败,后续仍会继续使用未完整初始化的 tiling 参数,导致错误未能正确向上层传播。 ## 原因分析 Init 原返回类型为 void。当 range 长度不等于 2 时,宏分支中的 return 只能结束 Init,PermuteWithEpGradTilingCompute 仍会继续执行后续 tiling 流程,因此非法输入没有稳定返回 GRAPH_FAILED。 同时,两个目标分支的 .clang-format 指针对齐规则不同:master 使用 PointerAlignment: Left,9.2.0 使用 PointerAlignment: Right。本次提交已按各自目标分支规则整理格式。 ## 解决方式 1. 将 Init 返回值改为 ge::graphStatus。 2. range 长度非法时返回 ge::GRAPH_FAILED,正常初始化返回 ge::GRAPH_SUCCESS。 3. 在 PermuteWithEpGradTilingCompute 中检查并传播 Init 的失败状态。 4. 将非法 range 长度 UT 的期望结果修改为 ge::GRAPH_FAILED。 5. 使用目标分支对应的 clang-format 规则整理两个变更文件。 ## 验证 - master 基线:1779476c7b8286ab17886e070bc98b8995bb4f1e - 9.2.0 基线:3c4087fa5e2f237877771fee4f7c495318b91560 - master 分支使用 clang-format 18.1.8 dry-run 检查通过。 - 两个分支均通过 git diff --check。 - GitCode 远端 push hooks 通过。 See merge request: cann/ops-transformer!13194 | 1 month ago | |
qkv_rms_norm_rope_cache_with_k_scale DFX 修复 Co-authored-by: renzetao<renzetao2@huawei.com> # message auto-generated for no-merge-commit merge: !13224 merge qkv_dfx_reivse into master qkv_rms_norm_rope_cache_with_k_scale DFX 修复 Created-by: renzetao Commit-by: renzetao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> qkv_rms_norm_rope_cache_with_k_scale 修正 DFX_IN 属性参数名: 将 layoutQkvAttr、layoutQOutAttr 改为 layoutQkv、layoutQOut,使 DFX 输入描述中的属性名与实际接口参数名保持一致。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#5464](https://gitcode.com/cann/ops-transformer/issues/5464) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 本地ttk验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13224 | 1 month ago | |
feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12834 merge fix_2 into master feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5016 ## 描述 #### 🐛 Bug 修复 / ✨ 特性增强 围绕既有 pre-commit 体系的三处完善(8 文件 +38/-12,1 笔提交):**拦截类钩子报告落盘**、**脚本健壮性修复**、**策略与文档对齐**。全部经 --all-files 全量实测校准。 ### 一、拦截类钩子报告统一落盘 pre-commit_reports/(不入 git) | 改动 | 内容 | |---|---| | scripts/run_codespell.sh(新增) | codespell 输出 tee 到 pre-commit_reports/codespell.log(entry 覆写仍跑托管 venv,PIPESTATUS 保退出码) | | .pre-commit-config.yaml | codespell entry 指向包装脚本 | | scripts/oat_check.sh | 报告落点 oat_reports/result.txt → pre-commit_reports/oat_result.txt(单文件与批量两条写路径同步) | | .gitignore | oat_reports/ → pre-commit_reports/ | | docs/zh/develop/pre-commit_guide.md | 失败排查节补报告位置说明 | 自动修类钩子(clang-format/ruff)直接改好文件无需报告;拼写/合规须人工处理,报告落盘便于复查与喂给 agent 修复。 ### 二、健壮性修复(姊妹仓全量实测暴露的同款隐患) | 改动 | 内容 | |---|---| | scripts/oat_check.sh | eval 拼接改数组传参 + -f 加引——文件名含 ()/&/[]/空格时 eval 会打断 shell 致扫描假死/假过(本仓当前 0 此类文件名,防御性修复) | | scripts/format_cpp.sh | 目录不存在时原仅打印提示仍继续执行,改为报错退出(exit 1) | ### 三、策略与文档对齐 | 改动 | 内容 | |---|---| | OAT.xml | 豁免 requirements*.txt(依赖清单,双过滤器)、*.info(cmake help,双过滤器)——全量扫描 250→240,残留均为真实缺头债(增量消化) | | trailing-whitespace | 补 --markdown-linebreak-ext=md(防静默剥掉 md 双空格硬换行语法,实测:双空格保留、三空格收敛、单空格照删) | | .clang-format | PointerAlignment 改 **Left**(int* p 指针随类型,领导确认口径;引用 & 同规则);年份 2025→2026 | ## 测试 - 全量 OAT 16 批真实扫描(无双误退出码);缺头 py 拦截有效、豁免类型放行 - md 双空格保留实测通过;codespell 命中落盘、OAT 报告落盘且目录不被 git 跟踪 - 本提交自身过全部钩子(含 OAT);yaml/xml/bash 语法全过 ## 留作仓主决策(本 PR 不动) - ruff --ignore 现行清单含 F841,F821,F401 等 F 系列——skills-dev 口径为「F 系列全启用抓真 bug」,两仓策略不同,建议仓主确认后另行统一 - third_party/catlass、third_party/opbase 下同名 oat_check.sh 为上游副本,未动 ## 类型标签 - [x] 🐛 Bug 修复 - [x] ✨ 特性增强 See merge request: cann/ops-transformer!12834 | 1 month ago | |
ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13100 merge test into master ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 描述 新增 PR 编译范围推导机制,替代原先由 tests/test_config.yaml(example 看护规则)间接决定编译范围的方式。**本 PR 为纯新增:不改任何现有逻辑/任务,UT 维持原状,master 上无 --PR_COMPILE 调用方,对现存 CI 零影响。** ### 1. 推导流程(cmake/scripts/parse_compile_scope.py) 变更文件 → 映射为 <domain>/<op> 键(仅认 attention/ffn/gmm/mamba/mc2/mhc/moe/posembedding 八个大目录;docs/、.md/.json/.ini 跳过)→ 按以下顺序决定编译清单: 1. **白名单优先**:直接变更的算子命中 tests/compile_scope_whitelist.yaml 时,按其 impact(完整编译清单)+ soc(必填,加载即校验,缺失直接报错)选定。当前收录 18 条目:attention/*_metadata(impact=自身+对应无后缀算子,soc 按无后缀 def 推导)、AICPU 算子 attention_worker_scheduler/ffn_worker_scheduler(仅 ascend910b)、mhc/mhc_sinkhorn_common(impact 为 mhc_sinkhorn 正反向,ascend950)。 2. **未命中走正规流程**:op_host/CMakeLists.txt 的 *_depends(兼容 PARENT_SCOPE 与 CACHE INTERNAL 标记)反向闭包,拉出所有声明依赖变更算子的下游;再按 *def.cpp 的 AICore AddConfig 做目标 SoC 过滤。 3. **域内 common/3rd**:变更映射为共享键(如 mc2/common),经 depends 反向闭包触发所有依赖它的算子(如改 mc2/common @910b → 17 个 mc2 算子)。 ### 2. SoC 依据 唯一依据为 def.cpp AddConfig(支持 ascend 短名/长名互认);op_host/config/<soc> 目录已废弃不作依据。def 中宏/变量等非常规写法的识别待 def 规范化后加强。 ### 3. build.sh 集成 新增 --PR_COMPILE <pr_filelist> 选项(注意 --soc 需在其前传):推导为空时打印提示并 exit 200(CI 侧约定 200=跳过成功);非空时设为 ascend_op_name 并进入 custom pkg 编译(出 kernel bin)。 ### 4. 白名单自检 python3 cmake/scripts/parse_compile_scope.py --check:校验白名单条目(算子存在、impact 目标存在、soc 合法、impact 为列表、soc 必填),有错非零退出逐条打印。已挂 pre-commit compile-scope-whitelist-check(仅白名单文件变更时触发)。 ### 5. 已确认的边界(不在本 PR 处理) - ascend310p/ascend350 暂不编译(后续单独出方案);多 SoC 单构建不支持(CI 走单 SoC 命令); - 框架级变更(根目录脚本/cmake 公共件)不触发编译范围,由改动方自行验证; - UT 逻辑完全不动(test_soc_config.yaml/get_soc_version.py 保留原样)。 ## 关联的Issue 关联Issue #5732;配套 CI 任务拆分(arch22/arch35)见 #13016(依赖本 PR,需后合入)。 ## 测试 - 语法:bash -n / py_compile / yaml / ruff 全过,pre-commit 全绿; - 推导用例:metadata 白名单(@950→flash_attn+metadata)、AICPU 白名单(@910b 命中、@950 空)、mhc_sinkhorn_common(@950→正反向)、mc2/common 闭包(@910b→17 算子)、dispatch_v2 闭包(@arch22→7 算子)、框架变更空范围; - 端到端:build.sh --soc=ascend950 --PR_COMPILE 实编成功(kernel bin 产出),空范围 exit 200。 ## 后续(另起 PR) depends drift 持续看护、def.cpp AddConfig 写法规范化、#13016 的 CI 任务拆分接入。 See merge request: cann/ops-transformer!13100 | 1 month ago | |
fix: JIT编译include路径CANN优先于torch_npu修复新dtype枚举不可见报错 Co-authored-by: weihao18<weihao16@h-partners.com> # message auto-generated for no-merge-commit merge: !13176 merge cherry-pick-mr-12632-1790645513997-auto into master fix: JIT编译include路径CANN优先于torch_npu修复新dtype枚举不可见报错 Created-by: hblnb Commit-by: weihao18 Merged-by: cann-robot Description: ## 描述 fix: JIT编译include路径CANN优先于torch_npu修复新dtype枚举不可见报错 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5221 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13176 | 1 month ago | |
feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12834 merge fix_2 into master feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5016 ## 描述 #### 🐛 Bug 修复 / ✨ 特性增强 围绕既有 pre-commit 体系的三处完善(8 文件 +38/-12,1 笔提交):**拦截类钩子报告落盘**、**脚本健壮性修复**、**策略与文档对齐**。全部经 --all-files 全量实测校准。 ### 一、拦截类钩子报告统一落盘 pre-commit_reports/(不入 git) | 改动 | 内容 | |---|---| | scripts/run_codespell.sh(新增) | codespell 输出 tee 到 pre-commit_reports/codespell.log(entry 覆写仍跑托管 venv,PIPESTATUS 保退出码) | | .pre-commit-config.yaml | codespell entry 指向包装脚本 | | scripts/oat_check.sh | 报告落点 oat_reports/result.txt → pre-commit_reports/oat_result.txt(单文件与批量两条写路径同步) | | .gitignore | oat_reports/ → pre-commit_reports/ | | docs/zh/develop/pre-commit_guide.md | 失败排查节补报告位置说明 | 自动修类钩子(clang-format/ruff)直接改好文件无需报告;拼写/合规须人工处理,报告落盘便于复查与喂给 agent 修复。 ### 二、健壮性修复(姊妹仓全量实测暴露的同款隐患) | 改动 | 内容 | |---|---| | scripts/oat_check.sh | eval 拼接改数组传参 + -f 加引——文件名含 ()/&/[]/空格时 eval 会打断 shell 致扫描假死/假过(本仓当前 0 此类文件名,防御性修复) | | scripts/format_cpp.sh | 目录不存在时原仅打印提示仍继续执行,改为报错退出(exit 1) | ### 三、策略与文档对齐 | 改动 | 内容 | |---|---| | OAT.xml | 豁免 requirements*.txt(依赖清单,双过滤器)、*.info(cmake help,双过滤器)——全量扫描 250→240,残留均为真实缺头债(增量消化) | | trailing-whitespace | 补 --markdown-linebreak-ext=md(防静默剥掉 md 双空格硬换行语法,实测:双空格保留、三空格收敛、单空格照删) | | .clang-format | PointerAlignment 改 **Left**(int* p 指针随类型,领导确认口径;引用 & 同规则);年份 2025→2026 | ## 测试 - 全量 OAT 16 批真实扫描(无双误退出码);缺头 py 拦截有效、豁免类型放行 - md 双空格保留实测通过;codespell 命中落盘、OAT 报告落盘且目录不被 git 跟踪 - 本提交自身过全部钩子(含 OAT);yaml/xml/bash 语法全过 ## 留作仓主决策(本 PR 不动) - ruff --ignore 现行清单含 F841,F821,F401 等 F 系列——skills-dev 口径为「F 系列全启用抓真 bug」,两仓策略不同,建议仓主确认后另行统一 - third_party/catlass、third_party/opbase 下同名 oat_check.sh 为上游副本,未动 ## 类型标签 - [x] 🐛 Bug 修复 - [x] ✨ 特性增强 See merge request: cann/ops-transformer!12834 | 1 month ago | |
产品文档png文件名改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9654 merge master into master 产品文档png文件名改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3899](https://gitcode.com/cann/ops-transformer/issues/3899) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9654 | 3 months ago | |
feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12834 merge fix_2 into master feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5016 ## 描述 #### 🐛 Bug 修复 / ✨ 特性增强 围绕既有 pre-commit 体系的三处完善(8 文件 +38/-12,1 笔提交):**拦截类钩子报告落盘**、**脚本健壮性修复**、**策略与文档对齐**。全部经 --all-files 全量实测校准。 ### 一、拦截类钩子报告统一落盘 pre-commit_reports/(不入 git) | 改动 | 内容 | |---|---| | scripts/run_codespell.sh(新增) | codespell 输出 tee 到 pre-commit_reports/codespell.log(entry 覆写仍跑托管 venv,PIPESTATUS 保退出码) | | .pre-commit-config.yaml | codespell entry 指向包装脚本 | | scripts/oat_check.sh | 报告落点 oat_reports/result.txt → pre-commit_reports/oat_result.txt(单文件与批量两条写路径同步) | | .gitignore | oat_reports/ → pre-commit_reports/ | | docs/zh/develop/pre-commit_guide.md | 失败排查节补报告位置说明 | 自动修类钩子(clang-format/ruff)直接改好文件无需报告;拼写/合规须人工处理,报告落盘便于复查与喂给 agent 修复。 ### 二、健壮性修复(姊妹仓全量实测暴露的同款隐患) | 改动 | 内容 | |---|---| | scripts/oat_check.sh | eval 拼接改数组传参 + -f 加引——文件名含 ()/&/[]/空格时 eval 会打断 shell 致扫描假死/假过(本仓当前 0 此类文件名,防御性修复) | | scripts/format_cpp.sh | 目录不存在时原仅打印提示仍继续执行,改为报错退出(exit 1) | ### 三、策略与文档对齐 | 改动 | 内容 | |---|---| | OAT.xml | 豁免 requirements*.txt(依赖清单,双过滤器)、*.info(cmake help,双过滤器)——全量扫描 250→240,残留均为真实缺头债(增量消化) | | trailing-whitespace | 补 --markdown-linebreak-ext=md(防静默剥掉 md 双空格硬换行语法,实测:双空格保留、三空格收敛、单空格照删) | | .clang-format | PointerAlignment 改 **Left**(int* p 指针随类型,领导确认口径;引用 & 同规则);年份 2025→2026 | ## 测试 - 全量 OAT 16 批真实扫描(无双误退出码);缺头 py 拦截有效、豁免类型放行 - md 双空格保留实测通过;codespell 命中落盘、OAT 报告落盘且目录不被 git 跟踪 - 本提交自身过全部钩子(含 OAT);yaml/xml/bash 语法全过 ## 留作仓主决策(本 PR 不动) - ruff --ignore 现行清单含 F841,F821,F401 等 F 系列——skills-dev 口径为「F 系列全启用抓真 bug」,两仓策略不同,建议仓主确认后另行统一 - third_party/catlass、third_party/opbase 下同名 oat_check.sh 为上游副本,未动 ## 类型标签 - [x] 🐛 Bug 修复 - [x] ✨ 特性增强 See merge request: cann/ops-transformer!12834 | 1 month ago | |
ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13100 merge test into master ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 描述 新增 PR 编译范围推导机制,替代原先由 tests/test_config.yaml(example 看护规则)间接决定编译范围的方式。**本 PR 为纯新增:不改任何现有逻辑/任务,UT 维持原状,master 上无 --PR_COMPILE 调用方,对现存 CI 零影响。** ### 1. 推导流程(cmake/scripts/parse_compile_scope.py) 变更文件 → 映射为 <domain>/<op> 键(仅认 attention/ffn/gmm/mamba/mc2/mhc/moe/posembedding 八个大目录;docs/、.md/.json/.ini 跳过)→ 按以下顺序决定编译清单: 1. **白名单优先**:直接变更的算子命中 tests/compile_scope_whitelist.yaml 时,按其 impact(完整编译清单)+ soc(必填,加载即校验,缺失直接报错)选定。当前收录 18 条目:attention/*_metadata(impact=自身+对应无后缀算子,soc 按无后缀 def 推导)、AICPU 算子 attention_worker_scheduler/ffn_worker_scheduler(仅 ascend910b)、mhc/mhc_sinkhorn_common(impact 为 mhc_sinkhorn 正反向,ascend950)。 2. **未命中走正规流程**:op_host/CMakeLists.txt 的 *_depends(兼容 PARENT_SCOPE 与 CACHE INTERNAL 标记)反向闭包,拉出所有声明依赖变更算子的下游;再按 *def.cpp 的 AICore AddConfig 做目标 SoC 过滤。 3. **域内 common/3rd**:变更映射为共享键(如 mc2/common),经 depends 反向闭包触发所有依赖它的算子(如改 mc2/common @910b → 17 个 mc2 算子)。 ### 2. SoC 依据 唯一依据为 def.cpp AddConfig(支持 ascend 短名/长名互认);op_host/config/<soc> 目录已废弃不作依据。def 中宏/变量等非常规写法的识别待 def 规范化后加强。 ### 3. build.sh 集成 新增 --PR_COMPILE <pr_filelist> 选项(注意 --soc 需在其前传):推导为空时打印提示并 exit 200(CI 侧约定 200=跳过成功);非空时设为 ascend_op_name 并进入 custom pkg 编译(出 kernel bin)。 ### 4. 白名单自检 python3 cmake/scripts/parse_compile_scope.py --check:校验白名单条目(算子存在、impact 目标存在、soc 合法、impact 为列表、soc 必填),有错非零退出逐条打印。已挂 pre-commit compile-scope-whitelist-check(仅白名单文件变更时触发)。 ### 5. 已确认的边界(不在本 PR 处理) - ascend310p/ascend350 暂不编译(后续单独出方案);多 SoC 单构建不支持(CI 走单 SoC 命令); - 框架级变更(根目录脚本/cmake 公共件)不触发编译范围,由改动方自行验证; - UT 逻辑完全不动(test_soc_config.yaml/get_soc_version.py 保留原样)。 ## 关联的Issue 关联Issue #5732;配套 CI 任务拆分(arch22/arch35)见 #13016(依赖本 PR,需后合入)。 ## 测试 - 语法:bash -n / py_compile / yaml / ruff 全过,pre-commit 全绿; - 推导用例:metadata 白名单(@950→flash_attn+metadata)、AICPU 白名单(@910b 命中、@950 空)、mhc_sinkhorn_common(@950→正反向)、mc2/common 闭包(@910b→17 算子)、dispatch_v2 闭包(@arch22→7 算子)、框架变更空范围; - 端到端:build.sh --soc=ascend950 --PR_COMPILE 实编成功(kernel bin 产出),空范围 exit 200。 ## 后续(另起 PR) depends drift 持续看护、def.cpp AddConfig 写法规范化、#13016 的 CI 任务拆分接入。 See merge request: cann/ops-transformer!13100 | 1 month ago | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
feat: 算子仓适配Ascend5162A芯片编译 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !12191 merge feat/ascend5162a-build-support into master feat: 算子仓适配Ascend5162A芯片编译 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 算子仓适配 Ascend5162A 芯片编译:在编译框架(CMakeLists、build 脚本、SOC 映射)与 UT 桩代码中注册 ascend5162a 计算单元(arch 目录复用 arch35),支持通过 --soc=ascend5162a 编译输出 5162A 算子包。 改动清单(8 个文件): | 文件 | 改动 | |---|---| | CMakeLists.txt | ASCEND_ALL_COMPUTE_UNIT、SOC_VERSION_LIST、ARCH_DIRECTORY_LIST 增加 ascend5162a(arch35) | | build.sh | SUPPORT_COMPUTE_UNIT_SHORT 增加 ascend5162a | | cmake/scripts/util/const_var.py | SOC_MAP_EXT 增加 ascend5162a → Ascend5162A | | cmake/scripts/util/opdesc_parser.py | SOC_TO_SHORT_SOC_MAP 增加 ascend5162a | | scripts/util/const_var.py | SOC_MAP_EXT 增加 ascend5162a → Ascend5162A | | tests/ut/framework_normal/common/op_api_csv_case_loader.h | SOC_VERSION 映射增加 Ascend5162A | | tests/ut/framework_normal/op_api/stub/opdev/platform.cpp | ASCEND5162A ToString 映射 | | tests/ut/framework_normal/op_api/stub/opdev/platform.h | SocVersion 枚举增加 ASCEND5162A | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5356 ## 测试 本地环境(CANN 9.2.0,aarch64)执行 build.sh --soc=ascend5162a,编译通过并成功生成算子包 cann-5162a-ops-transformer_9.2.0_linux-aarch64.run;pre-commit 全量检查通过。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!12191 | 1 month ago | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 months ago | |
feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12834 merge fix_2 into master feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5016 ## 描述 #### 🐛 Bug 修复 / ✨ 特性增强 围绕既有 pre-commit 体系的三处完善(8 文件 +38/-12,1 笔提交):**拦截类钩子报告落盘**、**脚本健壮性修复**、**策略与文档对齐**。全部经 --all-files 全量实测校准。 ### 一、拦截类钩子报告统一落盘 pre-commit_reports/(不入 git) | 改动 | 内容 | |---|---| | scripts/run_codespell.sh(新增) | codespell 输出 tee 到 pre-commit_reports/codespell.log(entry 覆写仍跑托管 venv,PIPESTATUS 保退出码) | | .pre-commit-config.yaml | codespell entry 指向包装脚本 | | scripts/oat_check.sh | 报告落点 oat_reports/result.txt → pre-commit_reports/oat_result.txt(单文件与批量两条写路径同步) | | .gitignore | oat_reports/ → pre-commit_reports/ | | docs/zh/develop/pre-commit_guide.md | 失败排查节补报告位置说明 | 自动修类钩子(clang-format/ruff)直接改好文件无需报告;拼写/合规须人工处理,报告落盘便于复查与喂给 agent 修复。 ### 二、健壮性修复(姊妹仓全量实测暴露的同款隐患) | 改动 | 内容 | |---|---| | scripts/oat_check.sh | eval 拼接改数组传参 + -f 加引——文件名含 ()/&/[]/空格时 eval 会打断 shell 致扫描假死/假过(本仓当前 0 此类文件名,防御性修复) | | scripts/format_cpp.sh | 目录不存在时原仅打印提示仍继续执行,改为报错退出(exit 1) | ### 三、策略与文档对齐 | 改动 | 内容 | |---|---| | OAT.xml | 豁免 requirements*.txt(依赖清单,双过滤器)、*.info(cmake help,双过滤器)——全量扫描 250→240,残留均为真实缺头债(增量消化) | | trailing-whitespace | 补 --markdown-linebreak-ext=md(防静默剥掉 md 双空格硬换行语法,实测:双空格保留、三空格收敛、单空格照删) | | .clang-format | PointerAlignment 改 **Left**(int* p 指针随类型,领导确认口径;引用 & 同规则);年份 2025→2026 | ## 测试 - 全量 OAT 16 批真实扫描(无双误退出码);缺头 py 拦截有效、豁免类型放行 - md 双空格保留实测通过;codespell 命中落盘、OAT 报告落盘且目录不被 git 跟踪 - 本提交自身过全部钩子(含 OAT);yaml/xml/bash 语法全过 ## 留作仓主决策(本 PR 不动) - ruff --ignore 现行清单含 F841,F821,F401 等 F 系列——skills-dev 口径为「F 系列全启用抓真 bug」,两仓策略不同,建议仓主确认后另行统一 - third_party/catlass、third_party/opbase 下同名 oat_check.sh 为上游副本,未动 ## 类型标签 - [x] 🐛 Bug 修复 - [x] ✨ 特性增强 See merge request: cann/ops-transformer!12834 | 1 month ago | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 month ago | |
支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Co-authored-by: lidongsheng<lidongsheng43@huawei.com> Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2170 merge 910_lds into master 支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Created-by: qq_46353993 Commit-by: 吴剑飞;lidongsheng Merged-by: cann-robot Description: ## 描述 本次修改支持用户通过build.sh的编译入口传入模板参数--kernel_template_input后按tilingkey编译、传入--bisheng_flags进行调试异常 ## 关联的Issue [支持按模板参数指定编译kernel](https://gitcode.com/cann/ops-transformer/issues/1036) [支持编译入参新增调试异常和调优参数](https://gitcode.com/cann/ops-transformer/issues/1044) ## 测试 二级冒烟、指定模板参数编译并执行测试用例 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!2170 | 8 months ago | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 months ago | |
ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13100 merge test into master ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 描述 新增 PR 编译范围推导机制,替代原先由 tests/test_config.yaml(example 看护规则)间接决定编译范围的方式。**本 PR 为纯新增:不改任何现有逻辑/任务,UT 维持原状,master 上无 --PR_COMPILE 调用方,对现存 CI 零影响。** ### 1. 推导流程(cmake/scripts/parse_compile_scope.py) 变更文件 → 映射为 <domain>/<op> 键(仅认 attention/ffn/gmm/mamba/mc2/mhc/moe/posembedding 八个大目录;docs/、.md/.json/.ini 跳过)→ 按以下顺序决定编译清单: 1. **白名单优先**:直接变更的算子命中 tests/compile_scope_whitelist.yaml 时,按其 impact(完整编译清单)+ soc(必填,加载即校验,缺失直接报错)选定。当前收录 18 条目:attention/*_metadata(impact=自身+对应无后缀算子,soc 按无后缀 def 推导)、AICPU 算子 attention_worker_scheduler/ffn_worker_scheduler(仅 ascend910b)、mhc/mhc_sinkhorn_common(impact 为 mhc_sinkhorn 正反向,ascend950)。 2. **未命中走正规流程**:op_host/CMakeLists.txt 的 *_depends(兼容 PARENT_SCOPE 与 CACHE INTERNAL 标记)反向闭包,拉出所有声明依赖变更算子的下游;再按 *def.cpp 的 AICore AddConfig 做目标 SoC 过滤。 3. **域内 common/3rd**:变更映射为共享键(如 mc2/common),经 depends 反向闭包触发所有依赖它的算子(如改 mc2/common @910b → 17 个 mc2 算子)。 ### 2. SoC 依据 唯一依据为 def.cpp AddConfig(支持 ascend 短名/长名互认);op_host/config/<soc> 目录已废弃不作依据。def 中宏/变量等非常规写法的识别待 def 规范化后加强。 ### 3. build.sh 集成 新增 --PR_COMPILE <pr_filelist> 选项(注意 --soc 需在其前传):推导为空时打印提示并 exit 200(CI 侧约定 200=跳过成功);非空时设为 ascend_op_name 并进入 custom pkg 编译(出 kernel bin)。 ### 4. 白名单自检 python3 cmake/scripts/parse_compile_scope.py --check:校验白名单条目(算子存在、impact 目标存在、soc 合法、impact 为列表、soc 必填),有错非零退出逐条打印。已挂 pre-commit compile-scope-whitelist-check(仅白名单文件变更时触发)。 ### 5. 已确认的边界(不在本 PR 处理) - ascend310p/ascend350 暂不编译(后续单独出方案);多 SoC 单构建不支持(CI 走单 SoC 命令); - 框架级变更(根目录脚本/cmake 公共件)不触发编译范围,由改动方自行验证; - UT 逻辑完全不动(test_soc_config.yaml/get_soc_version.py 保留原样)。 ## 关联的Issue 关联Issue #5732;配套 CI 任务拆分(arch22/arch35)见 #13016(依赖本 PR,需后合入)。 ## 测试 - 语法:bash -n / py_compile / yaml / ruff 全过,pre-commit 全绿; - 推导用例:metadata 白名单(@950→flash_attn+metadata)、AICPU 白名单(@910b 命中、@950 空)、mhc_sinkhorn_common(@950→正反向)、mc2/common 闭包(@910b→17 算子)、dispatch_v2 闭包(@arch22→7 算子)、框架变更空范围; - 端到端:build.sh --soc=ascend950 --PR_COMPILE 实编成功(kernel bin 产出),空范围 exit 200。 ## 后续(另起 PR) depends drift 持续看护、def.cpp AddConfig 写法规范化、#13016 的 CI 任务拆分接入。 See merge request: cann/ops-transformer!13100 | 1 month ago | |
update: 更新文件 classify_rule.yaml Co-authored-by: comic97<gaokeming@hisilicon.com> # message auto-generated for no-merge-commit merge: !13046 merge master into master update: 更新文件 classify_rule.yaml Created-by: comic97 Commit-by: comic97 Merged-by: cann-robot Description: ## 描述 删除重复文件:fia_tiling_info.h、fia_tiling_info.cpp ## 关联的Issue [删除重复文件路径](https://gitcode.com/cann/ops-transformer/issues/5700) ## 测试 不涉及 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13046 | 1 month ago | |
update cmake minimum required to 3.18.4 Co-authored-by: poorwill<wangbing110@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master update cmake minimum required to 3.18.4 Created-by: wangbing110 Commit-by: poorwill Merged-by: cann-robot Description: update cmake minimum required to 3.18.4 See merge request: cann/ops-transformer!9634 | 3 months ago | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 months ago | |
升级 ops-transformer 版本至 9.2.0 Co-authored-by: wang-minbo<wangminbo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !11465 merge master into master 升级 ops-transformer 版本至 9.2.0 Created-by: wang-minbo Commit-by: wang-minbo Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->https://gitcode.com/cann/ops-transformer/issues/5083 <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11465 | 2 months ago | |
check_compile_version Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2085 merge check_version into master check_compile_version Created-by: hid81635372 Commit-by: 吴剑飞 Merged-by: cann-robot Description: ## 描述 工程上支持在编译时对子包版本进行校验 ## 关联的Issue https://gitcode.com/cann/ops-transformer/pull/2085 ## 测试 功能上可以在子包版本低于构建依赖时进行告警,RDV已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 工程能力增加编译时版本校验功能 See merge request: cann/ops-transformer!2085 | 8 months ago |
🔥Latest News
- [2026/08] 仓内集成pre-commit代码检查框架,配置后
git commit时自动检查并修复格式问题,将规范问题拦截在提交阶段、提升代码合入效率,详见pre-commit配置指导书。 - [2026/07] A5上新支持算子quant_flash_attn,Dense Attention全量化场景专用,以及experimental目录新增同名算子支持A5的MxFP4全量化;chunk_gated_delta_rule算子支持A5;A5新增DSV4 dense训练阶段TopK筛选反向算子dense_lightning_indexer_grad_kl_loss、dense_lightning_indexer_softmax_lse;mc2新支持算子engram_fetch_grad。
- [2026/06] A5上新增支持sparse_flash_mla、mixed_quant_sparse_flash_mla以及对应的metadata算子,用于DSV4场景稀疏Attention计算。新增lightning_indexer_v2、quant_lightning_indexer_v2以及对应的metadata算子,用于DSV4场景TopK筛选。A5新增DSV4 sparse训练阶段Attention反向算子sparse_flash_mla_grad、sparse_lightning_indexer_kl_loss_grad;mc2新支持算子engram_fetch、engram_fetch_wait。
- [2026/05] fused_infer_attention_score算子A5上支持MxFP8全量化;A5上新支持算子flash_attn,Dense Attention非量化场景专用。
- [2026/04] mc2新支持算子mega_moe。
- [2026/03] recurrent_gated_delta_rule算子支持A5。
- [2026/02] 新支持算子mhc_post、mhc_pre、mhc_res。
- [2026/01] 新支持算子grouped_matmul<<<>>>调用示例,方便用户自定义使用。
- [2026/01] 新支持算子fused_floyd_attention、fused_floyd_attention_grad、matmul_allto_all。
- [2025/12] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导。
- [2025/12] 支持transformer类onnx算子插件,包括NPUFlashAttention、NPUMultiHeadAttention、NPUMoeComputeExpertTokens等。
- [2025/12] 新支持算子kv_rms_norm_rope_cache、attention_update、attention_worker_scheduler、gather_pa_kv_cache、kv_quant_sparse_flash_attention、lightning_indexer_grad、mla_preprocess、mla_preprocess_v2、grouped_matmul_swiglu_quant_v2、attention_to_ffn、ffn_to_attention。
- [2025/12] 开源算子支持NPU Simulator仿真工具开发调试。
- [2025/12] 开源算子支持Ascend 950PR&950DT系列产品/KirinX90系列产品。
- [2025/11] 新支持算子kv_quant_sparse_flash_attention、lightning_indexer、quant_lightning_indexer、sparse_flash_attention。
- [2025/11] 新支持示例算子rope_matrix和all_gather_add。
- [2025/11] 新增算子开发工程模板NpuOpsTransformerExt,无缝集成PyTorch张量操作,支持自动微分和GPU/NPU统一接口。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-transformer项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-transformer是CANN(Compute Architecture for Neural Networks)算子库中提供transformer类大模型计算的进阶算子库,包括attention类、moe类、mc2类等,覆盖各类attention、MoE计算、通算融合等场景,算子库在架构图中的位置如下。

📌版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,下载与CANN版本配套的分支源码,通用命令如下,${tag_version}替换为分支标签名。以9.0.0分支源码下载为例:
# 通用命令:git clone -b ${tag_version} https://atomgit.com/cann/ops-transformer.git
git clone -b 9.0.0 https://atomgit.com/cann/ops-transformer.git
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。