本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
update issuse template Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !365 merge master into master update issuse template Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!365 | 8 个月前 | |
doc Tools扫描错误修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1899 merge master into master doc Tools扫描错误修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools扫描错误修改 See merge request: cann/ops-math!1899 | 5 个月前 | |
修复graph ut中的无法运行某些用例的错误 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !1906 merge pass_ut into master 修复graph ut中的无法运行某些用例的错误 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复graph ut中的无法运行某些用例的错误 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1087 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1906 | 5 个月前 | |
950支持静态库功能检查与修正 Co-authored-by: sunwenlong<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !1872 merge static into master 950支持静态库功能检查与修正 Created-by: LuckySun Commit-by: sunwenlong Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 950支持静态库功能检查与修正。 使用新的tiling模板注册接口。 修改examples中的数据类型,因为走AICORE时不支持double ## 关联的Issue [[Bug-Report|缺陷反馈]: 静态库执行算子样例时出现错误](https://gitcode.com/cann/ops-math/issues/1074) ## 测试 算子样例执行通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1872 | 5 个月前 | |
math仓资料扫描整改 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !1996 merge text1 into master math仓资料扫描整改 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 math仓资料扫描。整改对应文件。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1131 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1996 | 5 个月前 | |
math仓资料扫描整改 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !1996 merge text1 into master math仓资料扫描整改 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 math仓资料扫描。整改对应文件。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1131 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1996 | 5 个月前 | |
ai agent auto generated kernels Co-authored-by: zhangzijie<zhangzijie11@hisilicon.com> # message auto-generated for no-merge-commit merge: !1904 merge master into master ai agent auto generated kernels Created-by: zhangzijie Commit-by: zhangzijie Merged-by: cann-robot Description: ## 描述 AI Agent 自动生成Kernel代码 - Sqrt - GeLU - LayerNorm ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1904 | 5 个月前 | |
【社区任务】Real算子AscendC实现 Co-authored-by: alfengyuan<yuanyaofeng@h-partners.com> # message auto-generated for no-merge-commit merge: !1774 merge 20260320 into master 【社区任务】Real算子AscendC实现 Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: 原设计文档评审pr:https://gitcode.com/cann/ops-math/pull/1634 # Real算子AscendC实现设计文档 ## 一、 需求背景 ### 1.1 需求来源 通过社区任务完成开源仓算子贡献的需求 ### 1.2 背景介绍 #### 1.2.1 Real算子实现优化 基于Real算子历史TBE版本使用AscendC 编程语言进行优化 Real算子(TBE)实现路径和相关API路径 - Real算子实现路径为: /usr/local/Ascend/cann-9.0.0/opp/built-in/op_impl/ai_core/tbe/impl/ops_legacy/dynamic/real.py - Real算子实现中的API路径: /usr/local/Ascend/cann-9.0.0/python/site-packages/tbe/dsl/compute/math.py #### 1.2.2 Real算子现状分析 通过对Real算子TBE版本的功能分析,当前支持的能力如下: - Input是float16/float32数据类型的时候,执行VS_add(x, 0)操作,直接返回原数据 - Input是complex32/complex64 数据类型的时候,创建TVM placeholder 调用 tbe.real(input) api生成 elsewise_single_real IR指令 - 自动调优,调用tbe.auto_schedule(res)进行自动调优 Real算子TBE版本的整体流程图如下图所示:  ## 二、 需求分析 ### 2.1 外部组件依赖 不涉及外部组件适配 ### 2.2 内部适配模块 内部aclnn接口已有,其他tiling,kernel,graph图需要适配 ### 2.3 需求模块设计 #### 2.3.1 AscendC算子原型 | 名称 | 类别 | dtype | format | shape | 介绍 |--|--|--|--|--|--| | input | 输入 | fp16/fp32/complex32/complex64 | ND | all | 输入tensor | Tout | 输入 | Int | ND | (1,) | 属性输入 | output | 输出 | fp16/fp32 | ND | 同输入 | 输出tensor - 相关约束: Atlas A2训练系列产品/Atlas 800I A2推理产品float16、float32、complex32、complex64 ## 三、 需求详细设计 ### 3.1 使能方式 | 上层框架 | 涉及的框架 | |---------|---------| | **TF训练/推理** | 不涉及 | | **PyTorch训练/推理** | 涉及 | | **ATC推理** | 涉及 | | **Aclnn直调** | 涉及 | | **OPAT调优** | 不涉及 | | **SGAT子图切分** | 不涉及 | ### 3.2 需求总体设计 #### 3.2.1 host侧设计 ##### 3.2.1.1 分核策略 参考库上类似算子Range,LinSpace,128个数据对齐,少于128个数据的单核,大于128数据的按128对齐后均分核 totalLength: 总元素个数 totalCoreNum: AI Core总数 usedCoreNum: 实际使用的核数 分核逻辑: if (totalLength <= 128) { usedCoreNum = 1; // 小数据量单核处理 } else { // 128个数据对齐切分 numOfPerCore = Align128Ceil(totalLength / totalCoreNum); usedCoreNum = min(totalLength / numOfPerCore, totalCoreNum); } ##### 3.2.1.2 数据分块和内存优化策略 UB总空间减去预留空间,再除以输出数据类型的字节数,再除以计算中间ub占用块(需要考虑开启Double Buffer)的情况, 对于非complex输入,数据直接拷贝到输出GM,需要UB空间为2(Double Buffer) 对于comoplex输入,数据需要拷贝到ub,提取实数,再拷贝输出,需要UB空间为 3(输入+输出,其中输入是输出的2倍) * 2(Double Buffer)= 6 | 输入类型 | inQueue | outQueue | 总倍数 | 说明 | |---------|---------|----------|:------:|------| | complex | 2x | 1x | 6 | 输入需存储完整复数(2x),双缓冲 | | real | 共享 | 共享 | 2 | TQueBind复用buffer | 具体实现公式参考如下代码块 cpp // 根据输入类型选择不同的UB倍数 bool isComplexInput = (inputDtype == DT_COMPLEX32 || inputDtype == DT_COMPLEX64); int64_t ubMultiplier = isComplexInput ? 6 : 2; // complex需要额外空间存放复数数据 // 计算单次循环可处理的元素数 int64_t ubAvailable = totalUbSize - RESERVED_UB_SIZE; // 预留256字节 int64_t ubOneLoopNum = Align128FloorSize(ubAvailable / (outputSize * ubMultiplier)); ##### 3.2.1.3 tilingKey规划策略 根据输入类型确定tilingKey | 输入类型 | tilingKey | |---------|---------| | complex32 | 1 | | complex64 | 2 | | complex128 | -预留 | | float16 | 4 | | float32 | 5 | cpp enum class RealTilingKey : int64_t { TILINGKEY_COMPLEX32 = 1, // complex32 -> float16 TILINGKEY_COMPLEX64 = 2, // complex64 -> float TILINGKEY_FLOAT16 = 4, // float16 -> float16 (identity) TILINGKEY_FLOAT = 5 // float -> float (identity) }; #### 3.2.2 kernel侧设计 ##### 3.2.2.1 kernel侧实现描述 Real算子针对不同输入类型采用不同的处理策略: 1. **复数输入(complex32/complex64)**: - 使用 GatherMask API提取复数实部 - 复数在内存中以交织方式存储:[real0, imag0, real1, imag1, ...] - 通过mask模式提取偶数索引位置的元素(实部) 2. **实数输入(float/float16)**: - 使用 TQueBind 实现零拷贝identity操作 - 输入输出共享同一块UB buffer,减少内存拷贝开销 ##### 3.2.2.2 AscendC实现流程图  ##### 3.2.2.3 TBE与AscendC实现流程图存在的差异点和原因 **整体架构对比:** ┌─────────────────────────────────────────────────────────────────────────────┐ │ 实现架构对比 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ TBE 架构: AscendC 架构: │ │ ┌──────────┐ ┌──────────┐ │ │ │ 用户代码 │ │ 用户代码 │ │ │ │(Python) │ │ (C++) │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │TBE DSL │ │AscendC │ │ │ │real.py │ │API调用 │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │ TVM │ │ 编译器 │ │ │ │IR生成 │ │直接编译 │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │自动调度 │ │手动调度 │ │ │ │优化 │ │优化 │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ └──────────┬───────────────┘ │ │ ▼ │ │ ┌──────────────┐ │ │ │ MOVEMASK │ │ │ │ 硬件指令 │ │ │ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ **详细对比表:** | 对比维度 | TBE实现 | AscendC实现 | 说明 | |---------|---------|------------|------| | **编程语言** | Python DSL | C++ Template | TBE更简洁,AscendC更底层 | | **调用入口** | real.py:real() | real.cpp:real() | 算子注册入口 | | **计算定义** | real_compute() | RealKernel::Process() | 计算逻辑定义 | | **API调用** | tbe.real(input) | GatherMask(dst, src, mode=1) | 高层API对比 | | **中间表示** | TVM IR (tir.real) | 无中间层 | TBE通过TVM IR | | **类型分发** | 运行时 if/else | 编译期 constexpr if | AscendC编译期优化 | | **形状分类** | classify() 自动 | 无需分类 | TBE支持多shape自动处理 | | **多核切分** | auto_schedule() 自动 | 手动计算 | TBE自动,AscendC手动 | | **UB切分** | auto_schedule() 自动 | 手动计算 ubMultiplier | TBE自动,AscendC手动 | | **双缓冲** | 框架自动管理 | 手动管理 TQue | TBE自动,AscendC手动 | | **流水线** | 框架自动优化 | 手动优化 | TBE自动优化 | | **指令映射** | "elewise_single_real" → "vector_real" | GatherMask(mode=1) → MOVEMASK | 最终相同 | | **实数处理** | elewise_single_VS_add(x, 0) | TQueBind Identity | 实数类型优化方式不同 | | **编译产物** | .o / .json / .bin | .o / .bin | 构建产物略有差异 | **数据流对比:** TBE数据流: AscendC数据流: ──────────── ──────────── GM → UB → Compute → UB → GM GM → UB → Compute → UB → GM ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ │ │ │ │ │ │ │ │ auto auto auto auto 手动 手动 手动 手动 **关键差异原因:** 1. **设计理念不同**: - TBE:声明式编程,描述"做什么",框架自动优化"怎么做" - AscendC:命令式编程,明确指定"怎么做" 2. **自动化程度不同**: - TBE:高度自动化(分核、UB切分、双缓冲、流水线) - AscendC:手动控制所有细节 3. **灵活性不同**: - TBE:快速开发,但优化空间受限 - AscendC:开发复杂,但优化空间更大 4. **底层实现相同**: - 两者最终都调用 **MOVEMASK** CCE指令 - 复数内存布局相同:[r0,i0, r1,i1, ...] - 提取原理相同:提取偶数索引元素 差异的原因,tbe实现分核逻辑是框架自动调优的,AscendC实现参考的库上Range算子,和Linspace算子。 ### 3.3 支持硬件 | 支持的芯片版本 | 是否支持 | |---------|---------| | 香橙派OrangePi AIpro | 不支持 | | Atlas 200I/500 A2推理产品 | 不支持 | | Atlas 800I/T A2 | 支持 | ### 3.4 算子约束限制 - complex128 由AICPU原生支持,aclnn层面路由 - 不支持广播 ## 四、 特性交叉分析 ## 五、 可维可测分析 ### 5.1 精度标准/性能标准 精度和TBE保持完全一致。 性能参考Real算子任务书,有如下要求: - 算子整体性能需与原TBE实现算子持平 - 暂仅要求所有核参与计算场景下,性能不低于原TBE算子的 95%。 - 如小shape无法达标(10us以下场景相差3us),提供性能仿真图和分析结论证明AscendC实现和TBE完全一致或优于TBE实现 ### 5.2 兼容性分析 - proto算子原型,legacy仓有一份旧的,要完全兼容旧的 See merge request: cann/ops-math!1774 | 5 个月前 | |
math仓资料扫描整改 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !1996 merge text1 into master math仓资料扫描整改 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 math仓资料扫描。整改对应文件。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1131 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1996 | 5 个月前 | |
stateless_random_normal_v2 support bf16 Co-authored-by: 丁靖<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !1907 merge add_bf16_0326 into master stateless_random_normal_v2 support bf16 Created-by: Ding_Jing Commit-by: 丁靖 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> aclnnNormalFloatFloat的输出参数out支持BF16类型 aclnnNormalFloatTensor的输入std和输出out支持BF16类型 aclnnNormalTensorFloat的输入mean和输出out支持BF16类型 aclnnNormalTensorTensor输入mean、std和输出out支持BF16类型 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1116](https://gitcode.com/cann/ops-math/issues/1116) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> root:/home/ops-math-master# ./test_normal_float_float_bf16 result[0] is: 3.308576 result[1] is: 6.382878 result[2] is: 0.000000 result[3] is: 0.000000 PASS root:/home/ops-math-master# ./test_normal_float_tensor_bf16 result[0] is: 4.070283 result[1] is: 0.774422 result[2] is: 0.000000 result[3] is: 0.000000 PASS root:/home/ops-math-master# ./test_normal_tensor_float_bf16 result[0] is: 4.070278 result[1] is: 1.033219 result[2] is: 0.000000 result[3] is: 0.000000 PASS root:/home/ops-math-master# ./test_normal_tensor_tensor result[0] is: 1.197252 result[1] is: 1.400380 result[2] is: 0.000000 result[3] is: 0.000000 PASS ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了random/stateless_random_normal_v2/docs/aclnnNormalFloatFloat.md,参数说明中out的数据类型新增BF16 更新了random/stateless_random_normal_v2/docs/aclnnNormalFloatTensor.md,参数说明中std和out的数据类型新增BF16 更新了random/stateless_random_normal_v2/docs/aclnnNormalTensorFloat.md,参数说明中mean和out的数据类型新增BF16 更新了random/stateless_random_normal_v2/docs/aclnnNormalTensorTensor.md,参数说明中mean、std和out的数据类型新增BF16 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1907 | 5 个月前 | |
feat: 新增BatchToSpaceND A5实现 Co-authored-by: tan_xin<tanxin44@huawei.com> Co-authored-by: ly_cann_coder<liyao152@huawei.com> Co-authored-by: onanfield<tianshang@huawei.com> Co-authored-by: zhanw_coding<zhanwang@huawei.com> Co-authored-by: focusforce<gongquanchao@huawei.com> Co-authored-by: yefeicoding<yefei25@huawei.com> # message auto-generated for no-merge-commit merge: !1943 merge ft-batch2spacend into master feat: 新增BatchToSpaceND A5实现 Created-by: zhanw_coding Commit-by: zhanw_coding;onanfield;ly_cann_coder;tan_xin;yefeicoding;focusforce Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> feat: 新增BatchToSpaceND A5实现 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1101 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增了 BatchToSpaceND 算子的相关文档 - conversion/batch_to_space_nd/README.md - docs/zh/op_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1943 | 5 个月前 | |
修复graph ut中的无法运行某些用例的错误 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !1906 merge pass_ut into master 修复graph ut中的无法运行某些用例的错误 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复graph ut中的无法运行某些用例的错误 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1087 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1906 | 5 个月前 | |
update license Co-authored-by: zhaozi3<zhaozi3@h-partners.com> # message auto-generated for no-merge-commit merge: !417 merge master into master update license Created-by: zhaozi3 Commit-by: zhaozi3 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!417 | 8 个月前 | |
修改910b leagcy包名链接地址 Co-authored-by: liulinxiang<liulinxiang1@huawei.com> # message auto-generated for no-merge-commit merge: !75 merge master into master 修改910b leagcy包名链接地址 Created-by: liulinxiang Commit-by: liulinxiang Merged-by: ascend-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!75 | 10 个月前 | |
doc Tools工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1930 merge master into master doc Tools工具扫描问题修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools工具扫描问题修改 See merge request: cann/ops-math!1930 | 5 个月前 | |
创建tf_plugin编译机制 Co-authored-by: chensi79@huawei.com<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !1784 merge master into master 创建tf_plugin编译机制 Created-by: chensi79 Commit-by: chensi79@huawei.com Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加tensorflow plugin编译选项 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1050 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 本地编包验证 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1784 | 5 个月前 | |
doc Tools扫描错误修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1899 merge master into master doc Tools扫描错误修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools扫描错误修改 See merge request: cann/ops-math!1899 | 5 个月前 | |
init | 11 个月前 | |
upd OAT.xml | 5 个月前 | |
doc Tools扫描错误修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1899 merge master into master doc Tools扫描错误修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools扫描错误修改 See merge request: cann/ops-math!1899 | 5 个月前 | |
doc Tools工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1930 merge master into master doc Tools工具扫描问题修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools工具扫描问题修改 See merge request: cann/ops-math!1930 | 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 | 6 个月前 | |
add third party notice Co-authored-by: qq_37913898<chendunyang1@huawei.com> # message auto-generated for no-merge-commit merge: !106 merge master-1027 into master add third party notice Created-by: qq_37913898 Commit-by: qq_37913898 Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!106 | 10 个月前 | |
修复experimental默认acos用例错误 Co-authored-by: liulinxiang<liulinxiang1@huawei.com> # message auto-generated for no-merge-commit merge: !1948 merge test/readme-update-test into master 修复experimental默认acos用例错误 Created-by: liulinxiang Commit-by: liulinxiang Merged-by: cann-robot Description: ## 描述 acos只支持910b,跑到ascend950会失败 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1089 ## 测试 自测OK ## 文档更新 无需更新文档 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 See merge request: cann/ops-math!1948 | 5 个月前 | |
classify_rule 新增V3算子 Co-authored-by: gh_M<meiguohan@huawei.com> # message auto-generated for no-merge-commit merge: !1995 merge master into master classify_rule 新增V3算子 Created-by: gh_M Commit-by: gh_M Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 增加stateless_random_uniform_v3和stateless_random_normal_v3 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1127 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [.] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1995 | 5 个月前 | |
修复patch三方件依赖缺失问题 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !1573 merge master into master 修复patch三方件依赖缺失问题 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复patch三方件依赖缺失问题 部分欧拉场景下,编译abseil三方库,需要patch库 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1573 | 5 个月前 | |
实际项目运行中,需要sympy等py库,增加requirements.txt Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !1096 merge master into master 实际项目运行中,需要sympy等py库,增加requirements.txt Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 实际项目运行中,需要sympy、attrs、decorator三方库,增加requirements.txt ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1096 | 7 个月前 | |
去除不必要的tbe-tik依赖 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !1460 merge master into master 去除不必要的tbe-tik依赖 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 去除不必要的tbe-tik依赖:version.cmake中,下线tbe-tik版本校验 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1460 | 6 个月前 |
ops-math
🔥Latest News
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR/Ascend 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)算子库中提供数学类计算的基础算子库,包括math类、conversion类等算子,算子库架构图如下:

📝版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
⚡️快速入门
若您希望从零到一快速体验项目能力,请访问下述简易教程。
- 环境部署:本文是QuickStart和各类教程的操作前提,请先完成基础环境搭建和源码下载。
- QuickStart:针对源码编译、算子调用/开发/调试等关键能力,提供快速上手的简易指南。
📖学习教程
若您已学习完快速入门章节,对本项目有一定认知,并希望深入了解和体验项目,请访问下述详细教程。
- 算子列表:提供全量算子信息,方便您查看算子分类和功能。
- 算子调用:提供多种源码编译和执行算子样例(包括执行UT)的方法。
- 算子开发:提供算子端到端开发指南,从零学习创建算子工程、实现Tiling和Kernel核心交付件。
- 算子调试调优:提供常见算子调试和调优方法,如DumpTensor、msProf、Simulator等。
除了上述关键教程,还有其他文档介绍,例如算子调用方式、build参数说明、术语概念等,全量文档请访问docs。
🔍目录结构
关键目录如下,详细目录介绍参见项目目录。
├── cmake # 项目工程编译目录
├── common # 项目公共头文件和公共源码
├── docs # 项目文档介绍
├── examples # 端到端算子开发和调用示例
├── experimental # 用户自定义算子存放目录
├── math # math类算子
│ ├── is_finite # is_finite算子所有交付件,如Tiling、Kernel等
│ │ ├── CMakeLists.txt # 算子编译配置文件
│ │ ├── docs # 算子说明文档
│ │ ├── examples # 算子使用示例
│ │ ├── op_graph # 算子构图相关目录
│ │ ├── op_host # 算子信息库、Tiling、InferShape相关实现目录
│ │ ├── op_api # 可选,算子aclnn接口实现目录,如未提供则表示此算子的aclnn接口会让工程自动生成
│ │ ├── op_kernel # 算子kernel目录
│ │ └── README.md # 算子介绍文档
│ ├── ...
│ └── CMakeLists.txt # 算子编译配置文件
├── ...
├── conversion # conversion类算子
├── random # random类算子
├── scripts # 脚本目录,包含自定义算子、kernel构建相关配置文件
├── tests # 测试工程目录
├── CMakeLists.txt
├── README.md
├── build.sh # 项目工程编译脚本
├── install_deps.sh # 安装依赖包脚本
└── requirements.txt # 项目需要的第三方依赖包
💬相关信息
🤝联系我们
本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。