本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
kirin_cann_test仓指定tag以下载固定代码版本 Co-authored-by: weixin_46515057<lidaoshuai@h-partners.com> # message auto-generated for no-merge-commit merge: !6316 merge master into master kirin_cann_test仓指定tag以下载固定代码版本 Created-by: weixin_46515057 Commit-by: weixin_46515057 Merged-by: cann-robot Description: kirin_cann_test仓指定tag以下载固定代码版本 See merge request: cann/ops-math!6316 | 14 天前 | |
hiF4Adapt Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !6414 merge hif4Adapt into master hiF4Adapt Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次改动为 math 仓提供统一的 NPU 架构版本号与数据类型常量定义头文件,用于支撑 hiF4(HiFloat4)等新数据类型的适配。 具体改动: - 新增 common/inc/op_host/op_const_def_math.h:在 Ops::Math 命名空间下以 constexpr 形式集中定义 GE 数据类型常量(ge::DataType,如 DT_FLOAT~DT_HIFLOAT4_SCALE),涵盖 DT_HIFLOAT8、DT_FLOAT8_E5M2/E4M3FN/E8M0、DT_FLOAT6_E3M2/E2M3、DT_FLOAT4_E2M1/E1M2、DT_HIFLOAT4、DT_HIFLOAT4_SCALE 等新增低精度类型。不包含 NPU 架构(NpuArch)常量,与 ops-nn 的 op_const_def_nn.h 保持一致。 - 修改 cmake/symbol.cmake:在 gen_opgraph_symbol 中将该头文件安装到 ${OPGRAPH_INC_INSTALL_DIR},确保 op_graph 编译时可引用。 - 修改 scripts/package/module/ascend/OpsMathInc.xml:将 op_const_def_math.h 加入 opp/built-in/op_graph/inc 交付件清单。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 编译验证:执行 math 仓编包,确认新增头文件可正常安装到 op_graph inc 目录,无编译错误。 - 交付件验证:确认 op_const_def_math.h 出现在 opp/built-in/op_graph/inc 交付清单中。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6414 | 11 天前 | |
docs: 修复注释与文档不一致(原型头文件拼写与 axes 说明) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6480 merge docs/comment-cleanup-20261019-07 into master docs: 修复注释与文档不一致(原型头文件拼写与 axes 说明) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复原型头文件注释: - common/inc/op_graph/op_math_proto_extend.h:specifed -> specified,intput -> input。 - conversion/strided_slice_assign_v2/op_graph/strided_slice_assign_v2_proto.h:Supoort -> Support;axes 输入说明由 stride 改为 axes。 同时包含文件末尾换行的 pre-commit 修复。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3666 ## 测试 - pre-commit(含 OAT):通过 - Markdown 链接/图片检查:无新增失效项 - Markdown 代码围栏检查:通过 - 全部 26 个分支合并验证:无冲突 ## 文档更新 - common/inc/op_graph/op_math_proto_extend.h - conversion/strided_slice_assign_v2/op_graph/strided_slice_assign_v2_proto.h ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6480 | 8 天前 | |
docs: 修复注释与文档不一致(原型头文件拼写与 axes 说明) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6480 merge docs/comment-cleanup-20261019-07 into master docs: 修复注释与文档不一致(原型头文件拼写与 axes 说明) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复原型头文件注释: - common/inc/op_graph/op_math_proto_extend.h:specifed -> specified,intput -> input。 - conversion/strided_slice_assign_v2/op_graph/strided_slice_assign_v2_proto.h:Supoort -> Support;axes 输入说明由 stride 改为 axes。 同时包含文件末尾换行的 pre-commit 修复。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3666 ## 测试 - pre-commit(含 OAT):通过 - Markdown 链接/图片检查:无新增失效项 - Markdown 代码围栏检查:通过 - 全部 26 个分支合并验证:无冲突 ## 文档更新 - common/inc/op_graph/op_math_proto_extend.h - conversion/strided_slice_assign_v2/op_graph/strided_slice_assign_v2_proto.h ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6480 | 8 天前 | |
docs: 修复注释与文档不一致(文档目录与 aclnn 索引) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6475 merge docs/comment-cleanup-20261019-01 into master docs: 修复注释与文档不一致(文档目录与 aclnn 索引) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复文档目录与 aclnn 索引不一致。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3664 ## 测试 - pre-commit(含 OAT):通过 - Markdown 链接/图片检查:无新增失效项 - 全部 26 个分支合并验证:无冲突 ## 文档更新 - docs/README.md - docs/zh/menu_aclnn_api.md ## 类型标签 - [x] 文档更新 See merge request: cann/ops-math!6475 | 8 天前 | |
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 | 14 天前 | |
docs: 修复注释与文档不一致(NeTensor 示例围栏与 Concat 标题) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6481 merge docs/comment-cleanup-20261019-08 into master docs: 修复注释与文档不一致(NeTensor 示例围栏与 Concat 标题) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 - math/not_equal/docs/aclnnNeTensor&aclnnInplaceNeTensor.md:关闭代码围栏独立成行。 - experimental/conversion/concat_v2/README.md:标题 Conact -> Concat。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3667 ## 测试 - pre-commit(含 OAT):通过 - Markdown 链接/图片检查:无新增失效项 - Markdown 代码围栏检查:通过 - 全部 26 个分支合并验证:无冲突 ## 文档更新 - experimental/conversion/concat_v2/README.md - math/not_equal/docs/aclnnNeTensor&aclnnInplaceNeTensor.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6481 | 8 天前 | |
迁移算子FileConstant、TemporaryVariable、DestroyTemporaryVariable、GuaranteeConst、PlaceHolder、PlaceholderWithDefault、ReadVariableOp、ConstPlaceHolder、VarHandleOp、VarIsInitializedOp、IsVariableInitialized Co-authored-by: gcw_2mqml1vq<guoguanghai@huawei.com> # message auto-generated for no-merge-commit merge: !5327 merge migrate_gelocal_0912 into master 迁移算子FileConstant、TemporaryVariable、DestroyTemporaryVariable、GuaranteeConst、PlaceHolder、PlaceholderWithDefault、ReadVariableOp、ConstPlaceHolder、VarHandleOp、VarIsInitializedOp、IsVariableInitialized Created-by: gcw_2mqml1vq Commit-by: gcw_2mqml1vq Merged-by: cann-robot Description: ## 描述 迁移gelocal算子FileConstant、TemporaryVariable、DestroyTemporaryVariable、GuaranteeConst、PlaceHolder、PlaceholderWithDefault、ReadVariableOp、ConstPlaceHolder、VarHandleOp、VarIsInitializedOp、IsVariableInitialized ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5327 | 29 天前 | |
[Fix] 修复 TopKV2 Host InferShape 的 k 范围校验和错误码 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !4987 merge fix/2026-08-23-ops-math-topkv2-invalid-k-infershape-01 into master [Fix] 修复 TopKV2 Host InferShape 的 k 范围校验和错误码 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: ## 修复摘要 修复 TopKV2 Host InferShape 对动态输入 k 缺少范围校验的问题。此前 k < 0 或 k 大于排序轴长度时,形状推导仍返回成功并把非法值写入输出 shape;同时,负责 公共推导的 helper 使用 bool 返回类型,不能准确传递 GRAPH_FAILED。 现在将 helper 返回类型改为 graphStatus,对负 k 返回 GRAPH_FAILED,并在排序轴 长度已知时拒绝 k > axis_size,使 Host 形状推导与 TopKV2 约束及 AICPU 参数校验 保持一致。 ## 变更范围 - math/top_k_v2/op_host/top_k_v2_infershape.cpp:增加 k 非负校验和已知排序轴 长度的上界校验,并修正 helper 返回类型以保留标准错误码。 - math/top_k_v2/tests/ut/op_host/test_top_k_v2_infershape.cpp:增加 k 等于轴长 的合法边界对照,并覆盖 k=axis_size+1、k=-1 两个非法方向。 - 评审补充修复(当前 head c1ec6444d406e7572f26a9091ce05b1d08732a93):补全 dim < -rank 的非法负轴校验,避免归一化后使用负下标读取排序轴长度;同时增加 rank=2, dim=-3 返回 GRAPH_FAILED 的回归用例。 - 兼容性:合法 k、合法负轴和未知轴长度的动态 shape 推导保持原有行为;仅提前拒绝 明确非法参数,不涉及 ABI、kernel 或公开接口。 ## 测试结果 - 在固定 commit 0a2ce5b57caec6068d9e5658b740c2d41482aa15 的 Host UT 配置下,执行 cmake --build <build-dir> --target math_op_host_ut -- -j2,退出码为 0,完整 TopKV2 Host UT 共 12/12 通过。 - 执行 <build-dir>/tests/ut/op_host/math_op_host_ut --gtest_filter='TopKV2InferShape.*',退出码为 0,定向回归 4/4 通过: k=32 返回 GRAPH_SUCCESS,k=33 和 k=-1 返回 GRAPH_FAILED。 - 当前 head 已包含 dim=-3 的负轴越界回归用例,且该 head 的 GitCode CI 状态已回查为 通过。 - 验证环境 Toolkit/OPP 为 CANN 9.1.0,目标源码属于后续开发线;本次结论限定为 Host ## 关联的 Issue - https://gitcode.com/cann/ops-math/issues/2814 ## Patch 来源 - 初始基线 commit:0a2ce5b57caec6068d9e5658b740c2d41482aa15 - 初始 Patch SHA-256:bc407fd5d64ab0bff69c95f7e3d3b6834d2cf7d557f4516decd6b5882e6b6151 - 评审补充修复 commit:c1ec6444d406e7572f26a9091ce05b1d08732a93 See merge request: cann/ops-math!4987 | 8 天前 | |
TensorEqual & RandomUniformV2 supprot Ascend960dt/Ascend960pr Co-authored-by: magicjason0007<wangdongxu20@huawei.com> # message auto-generated for no-merge-commit merge: !6401 merge master into master TensorEqual & RandomUniformV2 supprot Ascend960dt/Ascend960pr Created-by: magicjason0007 Commit-by: magicjason0007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将 tensor_equal、random_uniform_v2 两个算子扩展适配 ascend960dt / ascend960pr芯片 具体改动: 1. SoC 支持扩展(tensor_equal、random_uniform_v2): - 算子 CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 ascend960dt、ascend960pr(置于末尾),SUPPORT_TILING_DIR 对应追加,两个新平台仍复用 arch35 tiling 目录; - op_host/*_def.cpp:AddConfig 追加 ascend960dt/ascend960pr; - op_host/config/:新增 ascend960dt/、ascend960pr/ 配置目录(binary.json、simplified_key.ini与 ascend950 一致); - scripts/kernel/binary_config/ascendc_config.json:TensorEqual 条目 compute_units 追加ascend960dt/960pr 及对应 compile_options。 - 2. tensor_equal tiling 分核适配(op_host/arch35/tensor_equal_tiling_arch35.h/.cpp):新增 IsDv121() 架构判断接口,121 平台(DAV9201/DAV9202,即 ascend960dt/960pr)单核最小处理粒度由 2048调整为 256,通过 NpuArch 架构判断隔离,不影响 ascend950/ascend350 原有分核逻辑。 3. aclnn 校验:无需改动,仓内 aclnn_check.h 的 IsRegBase 已覆盖 DAV_9201/9202,CheckSocVersionGe910B 基于 NpuArch 判断(未使用 SocVersion 范围判断),天然支持 960 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3607 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 本地验证和二级冒烟均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:算子新芯片平台(ascend960dt/ascend960pr)适配扩展 See merge request: cann/ops-math!6401 | 8 天前 | |
TensorEqual & RandomUniformV2 supprot Ascend960dt/Ascend960pr Co-authored-by: magicjason0007<wangdongxu20@huawei.com> # message auto-generated for no-merge-commit merge: !6401 merge master into master TensorEqual & RandomUniformV2 supprot Ascend960dt/Ascend960pr Created-by: magicjason0007 Commit-by: magicjason0007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将 tensor_equal、random_uniform_v2 两个算子扩展适配 ascend960dt / ascend960pr芯片 具体改动: 1. SoC 支持扩展(tensor_equal、random_uniform_v2): - 算子 CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 ascend960dt、ascend960pr(置于末尾),SUPPORT_TILING_DIR 对应追加,两个新平台仍复用 arch35 tiling 目录; - op_host/*_def.cpp:AddConfig 追加 ascend960dt/ascend960pr; - op_host/config/:新增 ascend960dt/、ascend960pr/ 配置目录(binary.json、simplified_key.ini与 ascend950 一致); - scripts/kernel/binary_config/ascendc_config.json:TensorEqual 条目 compute_units 追加ascend960dt/960pr 及对应 compile_options。 - 2. tensor_equal tiling 分核适配(op_host/arch35/tensor_equal_tiling_arch35.h/.cpp):新增 IsDv121() 架构判断接口,121 平台(DAV9201/DAV9202,即 ascend960dt/960pr)单核最小处理粒度由 2048调整为 256,通过 NpuArch 架构判断隔离,不影响 ascend950/ascend350 原有分核逻辑。 3. aclnn 校验:无需改动,仓内 aclnn_check.h 的 IsRegBase 已覆盖 DAV_9201/9202,CheckSocVersionGe910B 基于 NpuArch 判断(未使用 SocVersion 范围判断),天然支持 960 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3607 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 本地验证和二级冒烟均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:算子新芯片平台(ascend960dt/ascend960pr)适配扩展 See merge request: cann/ops-math!6401 | 8 天前 | |
设置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 | 4 个月前 | |
修复StatelessRandperm INT8/UINT8/INT16边界误拒及FLOAT16/BF16/FLOAT排列唯一性问题 Co-authored-by: guankarl<guanhongwei3@huawei.com> # message auto-generated for no-merge-commit merge: !6411 merge fix_stateless_randperm_dtype_boundary into master 修复StatelessRandperm INT8/UINT8/INT16边界误拒及FLOAT16/BF16/FLOAT排列唯一性问题 Created-by: guankarl Commit-by: guankarl Merged-by: cann-robot Description: ## 描述 StatelessRandperm(arch35 / Ascend 950)输出为0..n-1的随机排列,最大输出值为n-1。原Host tiling的 maxValueMap校验存在两类缺陷: **问题一(#3575):整数类型边界差一误拒。** 原以n > dtype最大值拒绝,导致INT8 n=128(最大输出127)、UINT8 n=256(最大输出255)、INT16 n=32768(最大输出32767)等可被dtype完整表示的边界被误拒。 **问题二(#3576):浮点类型未按连续整数精确表示范围校验。** 原FLOAT16/BF16/FLOAT的map值取类型最大有限值(65504/≈3.4e38/FLT_MAX),超精度边界输出出现舍入重复值,破坏排列合同:950PR真机实测torch.randperm(2051, dtype=float16)输出仅2050个不同值(2048重复,2049舍入为2048)、torch.randperm(259, dtype=bfloat16)输出仅258个不同值(256重复,257舍入为256);FLOAT在n>2^24+1时同理。 两个问题的修复均对齐PyTorch参考实现check_supported_max_int_with_precision(aten/src/ATen/native/TensorFactories.h,CPU/CUDA共用,注释明示按最大输出值n-1判定): - **commit 1**:GetInputN/GetOutputY两处校验修正为n-1 > dtype最大值才拒绝;n<0校验前移避免n-1下溢;新增INT8/UINT8/INT16边界UT用例 - **commit 2**:maxValueMap浮点值改为可精确表示的最大连续整数(FLOAT16 2^11、BF16 2^8、FLOAT 2^24,配合n-1判据即FP16 n≤2049、BF16 n≤257、FLOAT n≤2^24+1,与PyTorch对Half/Float的限制一致,BF16为PyTorch自身疏漏、本PR一并补齐);新增FLOAT16/BF16/FLOAT边界UT用例 - 同步更新docs/aclnnRandperm.md约束说明 ## 关联的issue - https://gitcode.com/cann/ops-math/issues/3575(整数边界差一误拒) - https://gitcode.com/cann/ops-math/issues/3576(浮点精度丢失排列唯一性) ## 测试 - op_host UT(本地Ascend950PR环境,bash build.sh -u --ophost --ops=stateless_randperm --soc=ascend950):新增6个边界用例全部通过——INT8 128放行/129拒绝、UINT8 256放行/257拒绝、INT16 32768放行/32769拒绝、FLOAT16 2049放行/2050拒绝、BF16 257放行/258拒绝、FLOAT 16777217放行/16777218拒绝,均含tilingKey与workspace golden校验 - 950PR真机复现(修复前):torch.randperm(128, dtype=torch.int8, device='npu')报错input n must not be greater than max value of [attr]dtype(错误栈指向stateless_randperm_tiling_arch35.cpp GetInputN),CPU侧同参数返回合法排列;FP16/BF16重复值数据见上 - PyTorch对照:CPU对Half限制n≤2049(报错n cannot be greater than 2049 for Half type.);int8 n=128 CPU正常/n=129报value cannot be converted to type int8,与本修复后语义一致;BF16在PyTorch CPU无检查(同样产生重复值)、CUDA不支持,本修复较参考更严谨 - 说明:存量用例stateless_randperm_tiling_950_001在未含本PR的master基线上同样失败(golden tiling data串与本地sort tiling版本不匹配的预置问题,已stash复测确认与本次改动无关) ## 文档更新 docs/aclnnRandperm.md约束说明按dtype实际可精确表示范围细化:INT8 n≤128、UINT8 n≤256、INT16 n≤32768、FLOAT16 n≤2049、BFLOAT16 n≤257、FLOAT n≤16777217 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 See merge request: cann/ops-math!6411 | 8 天前 | |
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 个月前 | |
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 个月前 | |
迁移开源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 | 2 个月前 | |
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 | 11 天前 | |
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 | 2 个月前 | |
工程框架支持兼容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 | 12 天前 | |
产品名变更 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 个月前 | |
init | 1 年前 | |
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 | 1 个月前 | |
产品名变更 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 个月前 | |
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 | 5 个月前 | |
【描 述】 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 个月前 | |
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 个月前 | |
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 | 2 个月前 | |
refactor: 完成公共头文件迁移并修复关联验证问题 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !6400 merge refactor/math-prefix-common-headers-1015 into master refactor: 完成公共头文件迁移并修复关联验证问题 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 完成 ops-math 剩余公共头文件引用迁移,清理会与其他算子仓同名的兼容转发头。迁移同时触发此前暂缓算子的构建和冒烟,因此一并修复已复现的 UT 状态污染、SDK 类型冲突及示例 executor 生命周期问题。 - 将 Sin 的引用改为 op_api/level2_base_math.h,将 experimental Atan2、Tile、Polar 的引用改为 op_api/op_api_def_math.h。 - 全仓审计确认 level2_base.h、level2_base_caculation.h、op_api_def.h 的引用均为 0,删除这三个兼容转发头;清理 classify_rule.yaml 中两条失效路径,保留现有 canonical 头文件分类。分类配置不作为包过滤规则。 - Sin、Atan2 的每个 UT 用例保存并恢复平台 stub 的原始 SoC 和架构覆盖字段,避免负向 BF16 用例污染后续测试;保留全部原有用例和预期。 - Tile 删除与新版 SDK 冲突的全局 complex64 = uint64_t 别名,在 kernel 入口为 complex64 输入局部选择 uint64_t,保持原有按 64 位原始数据复制的行为。 - Polar 的两个示例在重复调用前显式启用 executor 复用,结束后销毁 executor;检查同步和结果拷贝错误,将精度失败和用例失败传递为非零退出码。保留原有五组形状、warmup 次数、计时次数和精度阈值。 共 14 个文件,+192/-201。所改文件包含 pre-commit 要求的 clang-format 18.1.8 调整,其中 tile.h 的 171 行 diff 主要为格式变化;已与格式化后的基线逐项比较,该头文件的逻辑改动仅删除五行旧类型别名块。 ## 关联的Issue Issue [#3243](https://gitcode.com/cann/ops-math/issues/3243)。 ## 测试 验证环境:CANN 9.0.0,aarch64 / Ascend910B3。 - 全部 11 个修改的现有文件通过容器 pre-commit 和显式 OAT;git diff --check、旧头文件零引用审计通过。 - Sin:32/32 focused UT;sin/sub/tan/tanh_grad 组合正常顺序和随机顺序(seed 17)均 116/116 通过。未修复的干净基线可复现相同 5 个 BF16 失败。 - Atan2:21/21 focused UT;atan/atan2/cross 组合正常顺序和随机顺序(seed 17)均 51/51 通过。 - 当前完整 diff 经仓库 CI 生成器选择的以下命令全部通过: bash bash build.sh -u -j16 --experimental --ops=atan2,polar,tile --opapi --soc=ascend910b bash build.sh -u -j16 --experimental --ops=tile --opkernel --soc=ascend910b bash build.sh --pkg -j16 --experimental --vendor_name=experimental --ops=atan2,polar,tile - 上述 op_api UT 为 23/23(Atan2 21 个、Repeat 2 个;Polar 无 op_api UT);Tile kernel UT 为 3/3,三组比较均 max_diff=0.0。 - 三算子实验包构建及只读完整性校验 --check --noexec 通过。检查实际包内容:含公开 API 头、libcust_opapi.so、3 个 Atan2 / 1 个 Polar / 24 个 Tile kernel 对象,不含三个旧公共头。实际 Polar 对象依赖 canonical 头文件。 - Tile 在 NPU 1 上完成 float32 和三组 complex64 实机检查,输出逐位一致,覆盖负零、NaN、无穷及次正规数。 - Polar 两个示例各 5/5 实机用例通过,所有元素错误计数为 0;原始 REF 示例在相同自定义库下用 GDB 复现 malloc_consolidate(): unaligned fastbin chunk detected / SIGABRT。两个示例均按 CI 的 -lcust_opapi 方式链接,不将 REF 文件名视为系统库对照。 - 实机 Polar 验证副本仅将设备常量从 0 改为 1,以避开 NPU 0 已有进程数限制;仓内示例仍使用设备 0。验证后源码 SHA256 和容器 vendor 配置均未改变,使用包的 staging 目录,无需安装到 SDK。 验证边界:以上为 CANN 9.0.0 本地容器结果,CANN 9.3 双架构 CI 和 A2 PreSmoke 待线上验证。全量常规 --pkg 构建仍被未修改的 conversion/concat_d/op_graph/fusion_pass/concat_to_concatd_fusion_pass.cpp 与 CANN 9.0 GE SubgraphRewriter::Replace 参数不匹配阻塞;干净基线翻译单元使用相同参数可复现,三算子实验包已通过。 ## 文档更新 无仓内文档变更;变更范围、历史问题、验证结果及限制已汇总于本 MR 描述。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:公共头文件引用迁移与兼容转发头清理 See merge request: cann/ops-math!6400 | 12 天前 | |
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 | 3 个月前 | |
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 个月前 | |
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 | 1 个月前 |
🔥Latest News
- [2026/07] 新增支持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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。