本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
| Files | Last commit | Last update |
|---|---|---|
fix(ci): 恢复ascend950包编译参数为16 Co-authored-by: zhanghedong<zhanghedong@huawei.com> # message auto-generated for no-merge-commit merge: !6857 merge fix/a5-compile-j8 into master fix(ci): 恢复ascend950包编译参数为16 Created-by: zhanghedong Commit-by: zhanghedong Merged-by: cann-robot Description: ## 描述 ascend950 TopkV2 算子编译已优化。本改动将 包编译并发恢复为16,增加同时运行的编译任务。 - .gitcode/scripts/compile.sh 的 调用参数从 -j8 改为 -j16。 - scripts/ci/compile_a5_pkg.sh 中普通算子、experimental 算子及全量 JIT 打包三处实际 build.sh 命令均改为 -j16。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4139 ## 测试 - 重跑实际编译,未触发OOM。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6857 | 12 days ago | |
npuarch: soc npuarch build adaptation | 8 days ago | |
topk_fusion_pass Co-authored-by: jerry_gd<jerry.luo@huawei.com> # message auto-generated for no-merge-commit merge: !6207 merge TopKFusionPass into master topk_fusion_pass Created-by: jerry_gd Commit-by: jerry_gd Merged-by: cann-robot Description: ## 描述 本 PR 在 math/topk/op_graph/fusion_pass 下新增旧版 fe::TopKFusionPass 重构的 TopKFusionPass(新 PatternFusionPass 框架 + ES 接口),将 TopK/TopKV2 替换为 AICore 优化路径,并按 opp 算子信息库实况覆盖构建矩阵内全部芯片家族。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4203 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 二级冒烟通过 - 相关topk的geir用例验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6207 | 11 days ago | |
【trans_data】CalculateMatmulWeightSizeV2 增加 dtype 白名单校验并补充 UT Co-authored-by: yyt_hw<yangyuting54@huawei.com> # message auto-generated for no-merge-commit merge: !6740 merge br_yyt_issue_3939 into master 【trans_data】CalculateMatmulWeightSizeV2 增加 dtype 白名单校验并补充 UT Created-by: yyt_hw Commit-by: yyt_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> CalculateMatmulWeightSizeV2 增加 dtype 白名单校验并补充 UT ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3939](https://gitcode.com/cann/ops-math/issues/3939) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新增 dtype 白名单校验 See merge request: cann/ops-math!6740 | 9 days ago | |
docs: fix QUICKSTART printf/DumpTensor reference chapter paths Co-authored-by: 豆豆943<dou12345622@qq.com> # message auto-generated for no-merge-commit merge: !5570 merge pr-2891-fix-quickstart-refs into master docs: fix QUICKSTART printf/DumpTensor reference chapter paths Created-by: weixin_73161469 Commit-by: 豆豆943 Merged-by: cann-robot Description: ## 背景 cann/ops-math#2891 报告 docs/QUICKSTART.md 中 printf 与 DumpTensor 的参见章节路径「算子调测API > ...」在《Ascend C API》目录中不存在。 ## 改动要点 - printf:参见章节修正为「Ascend C算子开发接口 > Utils API > 调测接口 > printf」(对应 api/Utils-API/tuning_interface/printf.md)。 - DumpTensor:参见章节修正为「Ascend C算子开发接口 > SIMD API > 基础API > 调试接口 > 上板打印 > DumpTensor」(对应 api/SIMD-API/basic_api/debug_interface/onboard_print/DumpTensor.md)。 章节归属依据 asc-devkit 官方 API 目录(utils_api_list.md 表7 调测接口、basic_api_list.md 调试接口 > 上板打印),并与 cann/ops-transformer docs/QUICKSTART.md 的既有写法保持一致。 ## 验证 - 纯文档改动,2 行; git diff --check 无空白错误。 - 改动后路径与 asc-devkit 文档树逐级核对一致。 Closes #2891 See merge request: cann/ops-math!5570 | 11 days ago | |
docs: AddExample 两种示例原型注释误称仅支持 FLOAT32 Co-authored-by: Ethan_Zou<tianjun.zou@foxmail.com> # message auto-generated for no-merge-commit merge: !6300 merge docs/b6-math-add-example-proto-integer-20261013 into master docs: AddExample 两种示例原型注释误称仅支持 FLOAT32 Created-by: Ethan_Zou Commit-by: Ethan_Zou Merged-by: cann-robot Description: ## 描述 AICore和AICPU AddExample三个Tensor说明均称只能FLOAT32,而两份同目录REG_OP实际支持FLOAT32与INT32;对应OpDef与示例实现也有整数路径。作为新算子开发模板,该复制注释会让贡献者遗漏已有整数接口能力。 两种示例的输入/输出类型文字统一为float32或int32,同源模板问题合并一组,不修改注册和执行实现。 ## 关联的Issue Fixes #3544 https://gitcode.com/cann/ops-math/issues/3544 ## 测试 依据同一源码基线的 REG_OP / OpDef / README 交叉核对文档参数、属性与计算语义;修复只改注释。最终 pre-commit 字节已复核:基线注释不满足注册契约,修复后一致;去除注释后的C++ token序列完全相同。具体注册片段、交叉引用行号和检查日志见 data/b6-math-add-example-proto-integer-contract-static.txt。 以本 case 干净基线执行适用 pre-commit hooks 与 diff --check 通过。 本地无 NPU;此修复只改文档注释,不宣称完成 GE 图构建或设备执行。 ## 文档更新 本 PR 修正文档中的已复现问题,修改范围见当前 diff。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI 使用声明 使用 AI 辅助核查和准备修复;由 Ethan_Zou 提交。每个 PR 保持一个提交。 ## AI 参与 使用 OpenAI Codex(GPT-6 系列)审查代码与文档,在 Host 侧复现、核对已有报告并准备修复。提交者账号为 Ethan_Zou。 See merge request: cann/ops-math!6300 | 29 days ago | |
[Docs] 修正中文提示、Cosh 参数及 Pow2 文档示例 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !6834 merge docs/issues-4190-4189-20261029-195900-P0800 into master [Docs] 修正中文提示、Cosh 参数及 Pow2 文档示例 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 中文接口列表的提示块显示英文 Note,Cosh 参数说明不完整,Pow2 输出形状说明误用了不存在的 self 参数。本次将提示标题改为“说明”,补全 Cosh 输入、输出含义并统一参数名,同时明确 Pow2 的输出形状由 x1 与 x2 按广播规则推导,并给出 [2,1] 与 [1,3] 广播得到 [2,3] 的示例。 Pow2 调用示例补全 testFp32() 的成功返回值,并添加 main() 入口返回其执行状态,使示例与独立可执行文件的编译教程一致。 ## 关联的Issue Closes #4190 Closes #4189 Closes #4227 Closes #4228 ## 测试 - 中文说明及 Cosh 参数表的原有 Markdown 渲染结构检查通过。 - Pow2 参数表结构检查通过:仅修改 out 的使用说明单元格;广播示例通过 NumPy broadcast_shapes 和 power 核对。 - Pow2 调用示例静态核对通过:补全成功返回与 main 入口,入口直接返回 testFp32() 的执行状态,代码围栏结构保持完整;未执行真实 CANN 编译或 NPU 运行。 - git diff --check、pre-commit(含 OAT)通过。 - 纯文档修改,未运行算子编译及 NPU 测试;GitCode 最终页面展示待在线复核。 ## 文档更新 - docs/zh/op_api_list.md:使用与现有中文文档一致的“说明”引用块。 - experimental/math/cosh/README.md:明确 self 为输入数据,out 保存逐元素双曲余弦结果。 - experimental/math/pow2/docs/test_aclnn_pow2.md:将 out 的 shape 说明改为 x1、x2 的共同广播形状,并补充示例;补全调用示例的成功返回和程序入口。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6834 | 12 days ago | |
feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Co-authored-by: Dazhou_Cao<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !6621 merge migrate-gelocal-delivery into master feat: 迁移gelocal控制流与基础算子交付件(含While/If/Case/For/PartitionedCall、TF控制流插件、reshape),实现RT2.0交付 Created-by: Dazhou_Cao Commit-by: Dazhou_Cao Merged-by: cann-robot Description: ## 描述 汇总迁移 gelocal(RT2.0)算子交付件: - **基础/GE 控制流算子**:size、rank、LoopCond、NextIteration、RefIdentity、SwitchByIndex、aipp_data、End、squeezev2、unsqueezev2,以及 enter/exit/merge/switch/switch_n/ref_* 等 - **子图控制流算子**:If、Case、For、PartitionedCall、While(原型注册 + RT2.0 推导注册 + UT + README,If/Case/For/PartitionedCall 含 GeIR 示例;均归入 ge 分类) - **TF 控制流插件**:If/_If/StatelessIf、While/_While/StatelessWhile、Case/StatelessCase、PartitionedCall/StatefulPartitionedCall 变体合并映射 - **reshape**:infershape 对齐 RT1.0 语义、allowzero/shape 属性注册、信息库 - **文档**:README 产品支持表统一(全部√)、gather_shapes 归入 conversion、op_list 同步登记 ## 测试 - bash build.sh --ophost --opgraph -j8 构建通过(含各算子 REG_OP 注册校验) - 宿主侧全量 UT:2594/2594 PASSED(384 test suites) ## 说明 - 内容汇总自此前迁移 PR(6474 / 6522 / 6208)的交付件,本 PR 为其合并后的统一交付 See merge request: cann/ops-math!6621 | 16 days ago | |
test: 修复exp_segsum_grad aclnn golden签名缺输出参数并对齐精度标准 Co-authored-by: qq_37917228<yanmingkui@huawei.com> # message auto-generated for no-merge-commit merge: !6814 merge fix/exp_segsum_grad_golden into master test: 修复exp_segsum_grad aclnn golden签名缺输出参数并对齐精度标准 Created-by: qq_37917228 Commit-by: qq_37917228 Merged-by: cann-robot Description: ## 描述 修复 exp_segsum_grad 的 aclnn golden( math/exp_segsum_grad/tests/assets/golden.py)三处问题: 1. **golden 签名缺输出参数**:ttk 框架的 aclnn golden 按头文件形参顺序位置下发全部张量形参(含输出)。aclnnExpSegsumBackward(gradOutput, gradSelf, gradInput) 是三个张量形参(见 math/exp_segsum_grad/op_host/op_api/aclnn_exp_segsum_backward.h:65),原签名只有 (gradOutput, gradSelf),ttk 调用即 TypeError → 用例 GOLDEN_FAILURE。现补齐 gradInput 输出占位参数(真值仍由 gradOutput/gradSelf 算出),与同仓 segsum 的 SegsumAclnnSpec 约定一致。 2. **空 shape 保护**:batch=0 或 N=0 时按 infershape 结果(gradOutput.shape[:-1])直接返回空 tensor 占位。 3. **精度标准对齐**:aclnn 侧 stat_rel_err → mix_tolerance,与仓内 golden 主流标准一致(segsum/erfc/inv 等)。 ## 关联的Issue close #4220 ## 测试 - [x] 全量回归完成:49/49 全部 PASS(100%) ## 文档更新 无需更新文档(仅测试 golden 脚本变更) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6814 | 9 days ago | |
fix:aclnnRandom && aclnnUniform bug修复 Co-authored-by: zhuzemao<zhuzemao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6950 merge ree_random_uniform into master fix:aclnnRandom && aclnnUniform bug修复 Created-by: zhuzemao Commit-by: zhuzemao Merged-by: cann-robot Description: ## 描述 aclnnRandom && aclnnUniform bug修复 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4379 ## 测试 不涉及 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6950 | 11 days ago | |
npuarch: soc npuarch build adaptation | 8 days ago | |
设置spack脚本set -e,使其有错误也会继续执行,消除codecheck告警 Co-authored-by: moudi123<moudi1@h-partners.com> # message auto-generated for no-merge-commit merge: !3109 merge master into master 设置spack脚本set -e,使其有错误也会继续执行,消除codecheck告警 Created-by: moudi123 Commit-by: moudi123 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3109 | 5 months ago | |
refactor: pad_v3/mirror_pad golden 内联 pad helper 副本,消除外部文件加载依赖 Co-authored-by: Xbying<2119046648@qq.com> # message auto-generated for no-merge-commit merge: !6560 merge golden-self-contained into master refactor: pad_v3/mirror_pad golden 内联 pad helper 副本,消除外部文件加载依赖 Created-by: 2301_81474000 Commit-by: Xbying Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - conversion/pad_v3/tests/assets/golden.py、conversion/mirror_pad/tests/assets/golden.py:删除 runpy.run_path + parents[4] 固定深度的外部加载,**内联各自的 pad helper 副本**(内容与 tests/golden_helpers/padding.py 同源),golden.py 成为完全自包含单文件。 - golden.py 单文件即可分发/随包打包/在 cross_check 竞品端独立执行,消除目录深度硬编码、单文件分发失效、远端探测失败等问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3760 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6560 | 21 days ago | |
feat: 构建脚本增加 --ccache 参数控制,支持编译时禁用 ccache Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3509 merge master into master feat: 构建脚本增加 --ccache 参数控制,支持编译时禁用 ccache Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 为 build.sh 新增 --ccache=<VALUE> 构建选项,支持在编译时显式启用或禁用 ccache 缓存加速。默认行为保持开启(ENABLE_CCACHE=TRUE),当传入 --ccache=off/false/disable 时关闭 ccache。同时在 cmake/gen_ops_info.cmake 增加一行 _ASCENDC_ENV_VAR 的 message(STATUS ...) 调试输出。 ### 改动详情 - **build.sh** - 在 SUPPORTED_LONG_OPTS 中注册 ccache= 长选项 - checkopts() 中初始化 ENABLE_CCACHE=TRUE,新增 ccache=*) 分支解析 VALUE:值为 off/false/disable 时置 ENABLE_CCACHE=FALSE - assemble_cmake_args() 中追加 CMAKE_ARGS="$CMAKE_ARGS -DENABLE_CCACHE=${ENABLE_CCACHE}",将开关透传给 cmake - 在全部 8 处 usage 帮助文本中补充 --ccache=<VALUE> 说明(VALUE: on/off/true/false/disable,Default: on) - **cmake/gen_ops_info.cmake** - 在 prepare_compile_from_config 的 CCACHE_PROGRAM 块后新增 message(STATUS "_ASCENDC_ENV_VAR: ${_ASCENDC_ENV_VAR}") 调试输出 ## 关联的Issue - #2039 ## 测试 - 构建验证:bash build.sh --ophost --ccache=on(默认开启)与 bash build.sh --ophost --ccache=off(显式关闭)均构建正常,-DENABLE_CCACHE 参数按预期透传给 cmake ## 文档更新 - 无单独文档更新;构建选项说明已通过 build.sh 内 usage 帮助文本同步更新 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3509 | 4 months ago | |
chore: 补充.gitattributes并将存量png统一迁移至LFS Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !5569 merge add-gitattributes into master chore: 补充.gitattributes并将存量png统一迁移至LFS Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 补充 PR !5397 遗漏的 .gitattributes,并将存量 png 统一迁移至 LFS(单提交、不重写历史)。 ### 背景 PR !5397 以 LFS pointer 形式提交了 docs/zh/figures/CastlikeFusionPass.png,但仓库缺少 .gitattributes 中 filter=lfs 规则声明,导致 git check-attr filter 为 unspecified,检出时该文件无法被 smudge 为真实图片。 ### 变更内容(单提交 8fee7b7ea) - 新增 .gitattributes:*.png filter=lfs diff=lfs merge=lfs -text(对齐 ops-nn / ops-transformer 惯例) - 将存量 37 个 png 二进制文件转换为 LFS pointer 存储,连同已有 pointer 共 38 个 png 统一走 LFS,消除混合存储导致的 git status 假 modified、checkout 告警及后续误提交风险 ## 关联的Issue #3057 ## 测试 - [x] git check-attr filter 对全部 png 返回 lfs - [x] git lfs ls-files 共 38 个文件,工作区可正常检出为真实 PNG - [x] git status clean,无假 modified 文件 - [x] pre-commit / OAT 合规检查通过 - [x] PR 仅含 1 个提交,无历史重写 ## 类型标签 - [x] 其他(工程配置修复) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!5569 | 1 month ago | |
迁移开源TF插件--math Co-authored-by: yaochen<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4308 merge transfer-math into master 迁移开源TF插件--math Created-by: nextyale Commit-by: yaochen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:迁移TF插件 See merge request: cann/ops-math!4308 | 3 months ago | |
feat: bincount/adjacent_difference 新增 ascend960dt/ascend960pr 注册级支持 Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !6388 merge 1010 into master feat: bincount/adjacent_difference 新增 ascend960dt/ascend960pr 注册级支持 Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 bincount、adjacent_difference 两算子新增 ascend960dt/ascend960pr 平台注册级支持(v121 适配)。 ### 改动原因 Ascend960 系列平台上线,算子需同步支持 ascend960dt/ascend960pr 计算单元;适配增量同步自内部仓 cann_out 分支,在 OSS master 基线上叠加。 ### 改动方法(注册级适配,kernel/tiling/aclnn 零改动) 1. **def.cpp 注册**(2 文件):bincount_def.cpp、adjacent_difference_def.cpp 在既有 AddConfig("ascend950"/"ascend350") 后追加 AddConfig("ascend960dt", aicoreConfig) 与 AddConfig("ascend960pr", aicoreConfig),复用同一 aicoreConfig,保留 ascend350 注册不删 2. **config 配置**(8 个新增文件):新增 op_host/config/ascend960dt/、op_host/config/ascend960pr/(2 算子 × 2 芯片 × binary.json + simplified_key.ini),内容与既有 ascend950 配置逐字节一致 3. **CMakeLists**(2 文件):SUPPORT_COMPUTE_UNIT 追加 "ascend960dt" "ascend960pr",SUPPORT_TILING_DIR 等量追加 "arch35"(tiling 复用 arch35) 4. **ascendc_config.json**:Bincount、AdjacentDifference 条目 compute_units 追加 "ascend960dt",compile_options 镜像 ascend950(-mllvm -cce-aicore-dcci-before-kernel-end=false) 5. **.pre-commit-config.yaml**:codespell 忽略列表追加 build-in(config 镜像中 ascend950 既有注释拼写,内容须与 950 逐字节一致不可修改) ## 关联的Issue - #3598 ## 测试 1. **ascend950 编译出包**:bash build.sh --pkg --soc=ascend950 --ops=bincount,adjacent_difference -j8 通过;包内 950 内核齐全(23 个 .o),aic-ascend960dt-ops-info.json 含 Bincount、AdjacentDifference 注册(960 注册生效核验) 2. **950 kernel 零影响硬证据**:适配前后两次编译,23 个 ascend950 kernel .o SHA256 逐字节一致(bit 级不变) 3. **ttk 精度回归 386/386 全 PASS**(Ascend950PR_9579,release 模式,seed=123): - bincount(kernel 级)192/192、adjacent_difference(kernel 级)81/81、aclnnBincount(API 级)113/113 - 正控 PASS / 负控 FAIL,判定链路自证有效 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6388 | 26 days ago | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !4332 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改AIDD扫描的核心资料问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2415](https://gitcode.com/cann/ops-math/issues/2415) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> quick_op_invocation.md cross_platform_migration_guide.md op_list.md aicpu_develop_guide.md ... ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4332 | 3 months ago | |
工程框架支持兼容arch配置(同步ops-nn PR #11603,适配本仓差异) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !6325 merge master into master 工程框架支持兼容arch配置(同步ops-nn PR #11603,适配本仓差异) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6325 | 26 days ago | |
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 1 month ago | |
init | 1 year ago | |
docs: 新增CastlikeFusionPass融合pass文档 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !5397 merge castlike-fusion-pass-doc into master docs: 新增CastlikeFusionPass融合pass文档 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 新增 CastLike 算子的融合 pass 说明文档,包含融合模式、使用约束及支持的型号信息: - **CastlikeFusionPass**:将图中的 CastLike 算子替换为 Cast 算子,从 CastLike 的类型参考输入 y 中提取目标类型 dst_type,替换后 Cast 仅接收 x 输入并携带 dst_type 属性。支持 Ascend 950PR/Ascend 950DT。 同时新增融合模式示意图(LFS)。 ## 关联的Issue #3057 ## 测试 纯文档更新,无需测试。 ## 文档更新 - 新增 math/cast/docs/CastlikeFusionPass.md - 新增 docs/zh/figures/CastlikeFusionPass.png ## 类型标签 - [x] 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!5397 | 2 months ago | |
docs(readme): README最新动态中Ascend 950系列表述补充Huawei品牌前缀 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !6662 merge master into master docs(readme): README最新动态中Ascend 950系列表述补充Huawei品牌前缀 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 更新 README.md「🔥Latest News」2026/07 条目的品牌表述:将"新增支持Ascend 950系列"修改为"新增支持**Huawei** Ascend 950系列",为 Ascend 950 系列补充 Huawei 品牌前缀。 ### 改动原因 规范品牌表述,Ascend 950 系列在对外文档中需携带 Huawei 品牌前缀。 ### 改动方法 仅修改 README.md 中该条目的一处文字,链接指向(Ascend950重点特性与本仓算子样例介绍)、算子及特性清单等内容均保持不变。 ## 关联的Issue - #3872 ## 测试 文档文案改动,不涉及代码逻辑。已核对:全 PR 仅此一处文字变更,Markdown 链接格式及指向未受影响。 ## 文档更新 - README.md:最新动态 2026/07 条目补充 Huawei 品牌表述 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6662 | 18 days ago | |
math仓的doc tools 工具检测的低错问题 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !2461 merge master into master math仓的doc tools 工具检测的低错问题 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 处理math仓的doc tools 工具检测的低错问题,包括markdown低错、htlm标签合入、链接是否可以正常跳转 ## 关联的Issue #关联issue#1262 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 更新全部文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2461 | 6 months ago | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !985 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试   ## 文档更新 SECURITY.md docs/zh/context/build_offline.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-math!985 | 8 months ago | |
add_example_aicpu修改 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !2237 merge bugfix-0415 into master add_example_aicpu修改 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本PR的具体修改内容如下: 1、修复add_example_aicpu的ut 2、ut说明中添加aicpu的kernel执行 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1122](https://gitcode.com/cann/ops-math/issues/1122) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> [2026-04-15 13:01:30] [ RUN ] TEST_AddExample_UT.INT32_VECTOR_ADD_SUCC [2026-04-15 13:01:30] [ OK ] TEST_AddExample_UT.INT32_VECTOR_ADD_SUCC (0 ms) [2026-04-15 13:01:30] [----------] 1 test from TEST_AddExample_UT (0 ms total) [2026-04-15 13:01:30] [2026-04-15 13:01:30] [----------] Global test environment tear-down [2026-04-15 13:01:30] [==========] 1 test from 1 test suite ran. (0 ms total) [2026-04-15 13:01:30] [ PASSED ] 1 test. [2026-04-15 13:01:30] [100%] Built target math_aicpu_op_kernel_ut ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了docs/zh/install/compile.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2237 | 6 months ago | |
refactor: 将 build.sh 拆分为模块化构建脚本 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !4239 merge master into master refactor: 将 build.sh 拆分为模块化构建脚本 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 将 ops-math 工程中原本约 1700 行的单体构建脚本 build.sh,按职责拆分为 8 个独立子脚本,放在 scripts/ 目录下。拆分后的 build.sh 仅作为入口,负责引入各模块并调用 main() 主流程统一调度,功能逻辑完全保持不变。 ### 改动原因 原始的 build.sh 将所有构建逻辑(配置管理、参数解析、编译、打包、UT、Example、GenOp 等)集中在一个文件中,代码量庞大(~1738 行),不利于维护和团队协作。本次重构将不同职责的代码分离到独立脚本中,提升可读性和可维护性。 ### 改动方法 - build.sh:精简为入口脚本(~70 行),定义环境变量,按序 source 各模块子脚本,定义 main() 统一调度构建流程 - 各子脚本按职责划分: - scripts/build.conf.sh(106 行):全局配置、变量定义、公共工具函数 - scripts/build_clean.sh(57 行):构建产物清理 - scripts/build_options.sh(846 行):命令行选项解析、校验、帮助信息展示 - scripts/build_cmake.sh(167 行):CMake 初始化与配置 - scripts/build_lib.sh(209 行):库编译、二进制编译、打包 - scripts/build_ut.sh(24 行):单元测试构建 - scripts/build_example.sh(284 行):示例代码构建 - scripts/build_genop.sh(59 行):GenOp 算子代码生成 ## 关联的Issue - #2381 https://gitcode.com/cann/ops-math/issues/2300 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。--> ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构 See merge request: cann/ops-math!4239 | 3 months ago | |
fix(batch_to_space,diag_flat,cosh): 按人工检视意见修复校验缺失、空输入安全、溢出与测试文档资产 Co-authored-by: yefeicoding<yefei25@huawei.com> # message auto-generated for no-merge-commit merge: !6566 merge longtail into master fix(batch_to_space,diag_flat,cosh): 按人工检视意见修复校验缺失、空输入安全、溢出与测试文档资产 Created-by: yefeicoding Commit-by: yefeicoding Merged-by: cann-robot Description: ## 描述 按人工检视意见对 batch_to_space、diag_flat、cosh 三个算子整改,共 61 个文件(+964/-825),5 个提交。 **batch_to_space** - op_host: batch_to_space_def.cpp 增加 bfloat16 支持对齐 ascend910b 基线;InferShape 补充 x 4D、crops 元素数/非负、N 可整除 block_size²、H_out/W_out>0 校验;tiling 补充 crops 元素数校验 - 资产与文档:golden 增加 __spec__ 注册;proto.h 注释改为 4D NHWC 并补 BasicType 清单;README 补 BF16 并修正属性角色;example 检查 AddGraph 返回值、释放 session 与输入缓冲 **diag_flat** - 空输入安全:arch35 SIMT 内核以 numInput 为一致分支守卫输入读取,避免空输入越界读 xGm[0];arch22 DiagFlatNDTo2DWithFew 空输入早退避免 iter=-1 负索引;GmSetZeroPad/GmSetZero 空输出提前返回避免整除零 - 校验与返回码:aclnn CheckParams 增加 INT64_MIN 与输出尺寸溢出校验(161002);空指针返回码由 ACLNN_ERR_INNER_NULLPTR 改为 ACLNN_ERR_PARAM_NULLPTR(161001);infershape/tiling/op_api 采用溢出安全计算 - 资产与文档:golden __spec__ 注册并补 @staticmethod;修正 4 条用例输出形状,atk 补负 diagonal 与 2-8 维输入;单测夹具改为真实单输入 x + 属性 diagonal;README/aclnnDiagFlat.md 修正 dtype 集合、空 Tensor 语义、输出形状公式与错误码;classify_rule.yaml 修正 diag_flat 交付路径 **cosh** - 样例与资产:test_aclnn_cosh.cpp FP32 阈值对齐 spec.yaml(rtol=atol=1e-5)、workspace 交由调用方持有并在流同步后释放;test_geir_cosh.cpp 输入缓冲改用 Tensor SetData(deleter) 释放、失败路径补 GEFinalize;golden __spec__ 注册(与已合入 #6652 版本一致) - 文档:README 调用说明补“样例代码”列并规范为 aclnn API/GE图模式/PyTorch API、self/out 补整数与 BOOL 类型;aclnnCosh&aclnnInplaceCosh.md 修正数据类型基准、BFLOAT16 归为 950/A3/A2 额外支持并补空 Tensor 说明;cosh_proto.h 恢复 REG_OP 上方 Doxygen 说明 ## 关联的Issue #3869 ## 测试 - 3 个算子 tests/assets/golden.py(cosh/diag_flat/batch_to_space)通过 python py_compile 语法检查 - diag_flat 单测夹具改造为真实单输入 x + 属性 diagonal;atk 用例补齐负 diagonal 与 2-8 维输入 - 本分支已 rebase 至最新 master(e4fbff83c),冲突解决后 cosh golden.py 与已合入 #6652 版本对齐 ## 文档更新 - README:batch_to_space(BF16/属性角色)、diag_flat(dtype/空 Tensor)、cosh(样例代码列/类型) - docs:aclnnDiagFlat.md(dtype/输出形状/错误码)、aclnnCosh&aclnnInplaceCosh.md(类型基准/BF16 归属/空 Tensor) - 其他:proto.h 注释、classify_rule.yaml 交付路径 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6566 | 14 days ago | |
fix: 修复 install_deps.sh 中管道与 source 场景被 run_command 吞输出的问题 Co-authored-by: chensi79@huawei.com<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !3865 merge fix/issue-2143-install-deps-pipe into master fix: 修复 install_deps.sh 中管道与 source 场景被 run_command 吞输出的问题 Created-by: chensi79 Commit-by: chensi79@huawei.com Merged-by: cann-robot Description: ## 描述 修复 install_deps.sh 中 run_command 与管道 / source 配合使用时的两类缺陷。 ### 根因 run_command() 用 output=$("$@" 2>&1) 捕获被包裹命令的标准输出,成功时只重新输出自身的 "Executing command: ..." 日志行。两类调用语义被破坏: 1. **管道场景**(install_cmake Ubuntu 18.04 分支,原 L220/L221):下游(gpg --dearmor、sudo tee)实际收到的是日志行而非真实 payload,Kitware 源 key 与 sources.list 导入失败。 2. **source 场景**(install_python/install_gcc 的 RHEL/CentOS 7 与 macOS 分支,原 L98/L107/L170/L183):run_command source X 在 $(...) 子 shell 中执行 source,导出的环境变量无法进入当前脚本。 ### 改动 去掉这 6 处调用点的 run_command 包裹: - L220 run_command wget -O - ... | gpg --dearmor - | sudo tee ... → wget -O - ... | gpg --dearmor - | sudo tee ... - L221 run_command echo 'deb [signed-by=...]' | sudo tee ... → echo 'deb [signed-by=...]' | sudo tee ... - L98/L107/L170/L183 run_command source X → source X 其余 30+ 处 run_command sudo apt/dnf install ... / run_command brew install ... 调用保持原样——这些场景下 run_command 工作正常(吞 stdout 反而让脚本输出更干净),且仍提供失败诊断。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2143 ## 测试 - bash -n install_deps.sh 语法检查通过 - 最小逻辑验证(参考 Issue #2143 中的复现用例): - 修复前:run_command printf hello | wc -c 输出 32(下游收到 Executing command: printf hello\n,hello 内容被吞) - 修复后:printf hello | wc -c 输出 5(下游收到真实 payload) ## 文档更新 无(仅修复脚本,未涉及文档) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3865 | 4 months ago | |
docs: 优化环境部署文档结构,补充基础依赖和构建参数说明 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !2404 merge master into master docs: 优化环境部署文档结构,补充基础依赖和构建参数说明 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 重构项目环境部署相关文档,优化安装流程说明结构。将构建工具依赖安装步骤从 compile.md 迁移至 quick_install.md,使开发者在一处即可完成全部环境准备;补充 build.sh 的 --soc 参数支持列表;新增 absl-py 和 jinja2 Python 依赖。 具体改动: 1. README.md:优化源码下载说明措辞,将 WebIDE 提示改为醒目的注释块说明 2. build.sh:新增 --soc 参数所有支持值的说明,列出 ascend910b、ascend910_93、ascend950 等全部 SoC 型号 3. docs/zh/install/compile.md:移除"安装构建工具"章节(已迁移至 quick_install.md) 4. docs/zh/install/quick_install.md:重构手动安装章节,新增"安装基础依赖"小节,整合构建工具和 Python 依赖安装步骤 5. requirements.txt:新增 absl-py>=2.0.0 和 jinja2>=3.1.0 依赖 ## 关联的Issue - #1347 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 更新了 README.md、docs/zh/install/compile.md、docs/zh/install/quick_install.md 文档内容。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2404 | 6 months ago | |
chore(version): ops_math包版本由9.1.0升级至9.2.0 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !5298 merge master into master chore(version): ops_math包版本由9.1.0升级至9.2.0 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 ### 改动原因 仓库已进入 9.2.0 发布周期(远端已发布 v9.2.0-beta.2 标签),ops_math 包版本号需由 9.1.0 升级至 9.2.0,与发布节奏对齐。 ### 改动方法 version.cmake 中 set_cann_package(ops_math VERSION "9.1.0") 调整为 "9.2.0"。编译依赖与运行时依赖(runtime/opbase/metadef/ge-compiler/bisheng-compiler/asc-devkit/ge-executor 等 >=8.5)保持不变。 ## 关联的Issue #3003 ## 测试 版本号变更仅影响打包元信息,编译验证通过。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:版本升级 See merge request: cann/ops-math!5298 | 2 months ago |
🔥Latest News
- [2026/07] 新增支持Huawei Ascend 950系列算子及新特性,涵盖CumulativeLogSumExp、MatrixSetDiagV2、DropoutV3Grad、SignBitsUnpack、ProdVirialSeA等算子;引入FLOAT8/FLOAT4低精度类型支持、Philox PRNG随机数生成、Reg接口迁移等新特性。
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR&950DT系列产品,可以通过CANN Simulator仿真工具开发调试;在add算子中增加了<<<>>>kernel异构调用示例,方便用户自定义使用;在多个类别中新支持算子concat、lerp、drop_out_v3等。
- [2025/11] 完善多个算子README描述,改进算子开发实例文档及example。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-math项目首次上线。
🚀概述
ops-math是CANN(Compute Architecture for Neural Networks)算子库中提供数值计算的基础算子库,包括conversion类、math类、random类等,覆盖张量形态变换、基础数学运算、随机数生成等场景,子库在架构图中的位置如下。

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