| Files | Last commit | Last update |
|---|---|---|
docs: 修正文档并补充 CdistGrad、Lerp、Pow2 Host UT Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !7248 merge docs/issue-4535-rowspan-20261109-issue4535 into master docs: 修正文档并补充 CdistGrad、Lerp、Pow2 Host UT Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 错误码表中的 rowspan 大于对应错误码实际占用的表格行数,导致表格结构不匹配。按现有 tr 结构修正 44 个文档中的 46 处错误码分组、92 个单元格跨度,保留现有报错描述及列表内容。 同时修复 Lerps 标量接口的维度约束披露缺口:同步更新正式目录中英文及 experimental 中文文档,分别说明普通和原地接口的连续性条件与非连续路径 8 维上限,补充对应 161002 场景,并保持表格跨度与新增描述行一致。全部连续时仅说明第一段接口跳过此项上限检查,不承诺任意维度均可执行。 精简中英文广播规则3:说明广播轴不明确或对齐后维度不兼容时的报错条件,补充 (2,2,2) 与 (2,2) 的轴选择及 (2,3) 的不兼容示例。规则1、2及其余内容保持原文。 为 experimental/math/cdist_grad、lerp、pow2 补充 Host 形状推导 UT,共22个用例,覆盖正常及批量形状、空张量、动态维度、广播、维度不兼容和缺失输入。仅新增3个测试源文件,通过现有 CMake 自动收集,不修改门禁脚本或算子实现。 ## 关联的Issue Closes #4535 Closes #4580 Closes #3986 ## 测试 - 使用独立 HTMLParser 检查所改 44 个文档的 98 个错误码分组:修改前 92 个单元格跨度不符,修改后为 0。 - 按字节比较确认仅 rowspan 数值发生变化,保留原有换行及所有描述内容。 - git -c core.whitespace=cr-at-eol diff --check 通过(保留三个原有 CRLF 文档的换行格式)。 - 对照正式及 experimental 的 CheckShape、MAX_SUPPORT_DIMS_NUMS=8 和原地接口复用 CalculateResult(selfRef, end, weight, selfRef) 的调用,核对维度条件和 161002 返回路径。 - Lerps 三份资料共 12 个错误码分组通过 HTML 表格检查;函数原型和示例代码保持不变。此前 #4535 的 44 份资料保持不变。 - pre-commit 检查命令通过;OAT 钩子对含 & 的路径跳过扫描,不将其视为 Markdown 内容扫描覆盖。 - 原有文档内容不变,未运行设备 Kernel 数值测试。 - 新增22项 Host InferShape UT,使用真实算子推导源码、仓库 context helper/GTest 入口及 CANN 9.3.0 库定向编译运行,22/22通过;标准 CMake 的 math_op_infershape_ut_cases 目标编译通过,Check_Example 不再报告缺 UT。 - 完整 Host UT 构建在公共 opbase 依赖处因 DAV_5162/CANN 头文件版本不匹配中断;上述22项定向测试不依赖该 tiling 公共模块,不将定向通过描述为完整 Host 构建通过。 - 逐字核对确认广播文档仅规则3及其例子与修改前不同,规则1、2和其他内容一致;中英文两份文档通过 pre-commit(含 OAT)及 diff --check。 ## 文档更新 覆盖正式目录中英文及 experimental 文档;修正表格跨行布局,不将跨度差解释为 API 报错场景缺失。另补充 aclnnLerps/aclnnInplaceLerps 条件化维度约束及相应错误码说明,保留标量 weight、类型与广播约束。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他 See merge request: cann/ops-math!7248 | 3 days ago | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 4 months ago | |
change socversion to npuarch Co-authored-by: liulinxiang<liulinxiang1@huawei.com> # message auto-generated for no-merge-commit merge: !1114 merge master22 into master change socversion to npuarch Created-by: liulinxiang Commit-by: liulinxiang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将代码里SocVersion::ASCEND950统一整改为使用npuarch ## 关联的Issue https://gitcode.com/cann/ops-math/issues/637 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 自测OK <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1114 | 9 months ago | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 4 months ago | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 4 months ago | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 4 months ago | |
【社区任务】AxpyV2算子开发-算子提交 Co-authored-by: Nice-try-zzw<1849404617@qq.com> # message auto-generated for no-merge-commit merge: !479 merge submit-axpy_v2 into master 【社区任务】AxpyV2算子开发-算子提交 Created-by: Nice_try Commit-by: Nice-try-zzw Merged-by: cann-robot Description: ## 描述 ### 背景信息 基于AxpyV2算子历史TBE版本使用Ascend C编程语言进行优化。 ### TBE源码分析 通过对AxpyV2算子TBE版本的功能分析,当前支持的能力如下: ① 算子支持float16,float32,bfloat16,int32四种格式的输入输出。 ② AxpyV2算子涉及到对输入数据进行广播(输入数据的shape调整到相同大小),任务书说明:暂可不支持广播场景 ③ 在对输入数据进行广播操作后,调用vmul、vadd、vmla和cast接口实现相应的表达式: - 算子功能:源操作数2(src2Tensor)中每个元素与标量(alphaScalar)对应元素求积后和源操作数1(src1Tensor)中的对应元素相加。 >  > 函数说明中,可以确定alpha是Scalar - 计算公式: $$ dstTensor_i = src1Tensor_i + alphaScalar * src2Tensor_i $$ > 对于数据类型为float16和bfloat16,需要类型转换为float32进行计算,另外支持alphaTensor与src1Tensor数据类型不一致。 AxpyV2算子TBE版本的整体流程图如下图所示:  > 在对tbe算子进行st测试时,三个输入以及一个输出的数据类型仅需满足是四个数据类型的其中一个即可,故共有$4^4=256$种数据类型组合情况。 ### 算子原型 <table style="undefined;table-layout: fixed; width: 1494px"><colgroup> <col style="width: 146px"> <col style="width: 110px"> <col style="width: 301px"> <col style="width: 219px"> <col style="width: 328px"> <col style="width: 101px"> <col style="width: 143px"> <col style="width: 146px"> </colgroup> <thead> <tr> <th>参数名</th> <th>输入/输出</th> <th>描述</th> <th>使用说明</th> <th>数据类型</th> <th>数据格式</th> <th>维度(shape)</th> <th>非连续Tensor</th> </tr></thead> <tbody> <tr> <td>x1</td> <td>输入</td> <td>待进行axpy_v2计算的入参,公式中的src1Tensor。</td> <td>无</td> <td>FLOAT、FLOAT16、BFLOAT16、INT32</td> <td>ND</td> <td>0-8</td> <td>√</td> </tr> <tr> <td>x2</td> <td>输入</td> <td>待进行axpy_v2计算的入参,公式中的src2Tensor。</td> <td>shape与x1相同。</td> <td>FLOAT、FLOAT16、BFLOAT16、INT32</td> <td>ND</td> <td>0-8</td> <td>√</td> </tr> <tr> <td>alpha</td> <td>输入</td> <td>待进行axpy_v2计算的入参,公式中的alphaScalar。</td> <td>shape为[]</td> <td>FLOAT、FLOAT16、BFLOAT16、INT32</td> <td>ND</td> <td>0-8</td> <td>√</td> </tr> <tr> <td>out</td> <td>输出</td> <td>待进行axpy_v2计算的出参,公式中的dstTensor。</td> <td>shape与x1相同。</td> <td>FLOAT、FLOAT16、BFLOAT16、INT32</td> <td>ND</td> <td>0-8</td> <td>√</td> </tr> </tbody> </table> ### 算子支持型号 Atlas A2 训练系列产品/Atlas 800I A2推理产品 ### host侧设计方案 算子计算过程不涉及数据的维度信息,故在host侧将数据视为一维向量,仅考虑数据个数,不考虑数据维度信息。 任务均分:coreNum 根据输入长度和块大小动态调整,确保每个核心处理的数据块数均匀。 批量搬运:tileBlockNum 和 tileDataNum 计算单次搬运的数据量,通过 finalSmallTileNum 和 finalBigTileNum 确定小核/大核的搬运次数,将多次搬运合并为批量操作,减少冗余开销。尾块的处理逻辑确保不完整块也能被合并到计算流程中,避免数据碎片。 #### 1) 分核策略 优先使用满核的原则。 如果核间能均分,可视作无大小核区分,大核小核数据块一致; 如果核间不能均分,需要将余出的数据块分配到前几个核上。 输入数据大小计算:通过GetInputShape和GetDataTypeLength函数获取输入数据的大小和类型长度,计算出输入数据的总字节数。 UB内存大小和核心数量获取:通过平台信息获取UB内存大小和核心数量,并根据这些信息调整核心数量。 #### 2) 数据分块和内存优化策略 充分使用UB空间的原则。 需要考虑不同硬件的UB大小不同、是否开启double buffer、kernel侧API实现过程中是否需要临时数据的储存,综合考虑单核内切分的大小。 UB内存大小获取:通过GetCoreMemSize函数获取UB内存的大小,用于后续的数据切分计算。 Tile块计算:根据UB内存大小和预定义的BLOCK_SIZE及BUFFER_NUM和不同类型下的ubDataNum,计算出每个Tile块的数据数量。 数据切分:将输入数据按照计算出的Tile块大小进行切分,计算出每个core需要处理的数据块数量和最后一个block的剩余数据量。 设置切分参数:将计算出的切分参数(如每个core的数据量、Tile块大小等)设置到RealDivTilingData对象中。 这些策略确保了数据在多个核心之间的均匀分布,并且在单个核心内进行了合理的切分,以提高并行处理的效率。 #### 3) tilingkey规划策略 不进行tilingkey划分,在kernel侧利用输入数据的类型来走不同的分支。 ### kernel侧设计方案 进行Init和Process两个阶段,其中Process包括数据搬入(CopyIn)、计算(Compute)、搬出(CopyOut)三个阶段。 1) 依照TBE实现,对于三个输入均为int32的情况下,使用Mul和Add来实现,并且无需转换数据类型,其余数据类型组合均转换为fp32进行计算;计算完成后,转换为输出的数据类型进行搬出。 2) Ascend C的AxpyV2算子流程见下图。  ## 关联的Issue [#281](https://gitcode.com/cann/ops-math/issues/281) [#231](https://gitcode.com/cann/ops-math/issues/231) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:社区任务算子设计文档 See merge request: cann/ops-math!479 | 9 months 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 |
AxpyV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A2系列产品 | √ |
功能说明
-
算子功能:源操作数2(src2Tensor)中每个元素与标量(alphaScalar)对应元素求积后和源操作数1(src1Tensor)中的对应元素相加。
-
计算公式:
dstTensori=src1Tensori+alphaScalar∗src2TensoridstTensor_i = src1Tensor_i + alphaScalar * src2Tensor_i dstTensori=src1Tensori+alphaScalar∗src2Tensori
参数说明
| 参数名 | 输入/输出 | 描述 | 使用说明 | 数据类型 | 数据格式 | 维度(shape) | 非连续Tensor |
|---|---|---|---|---|---|---|---|
| self | 输入 | 待进行axpy_v2计算的入参,公式中的src1Tensor。 | 无 | FLOAT、FLOAT16、BFLOAT16、INT32 | ND | 0-8 | √ |
| other | 输入 | 待进行axpy_v2计算的入参,公式中的src2Tensor。 | shape与x1相同。 | FLOAT、FLOAT16、BFLOAT16、INT32 | ND | 0-8 | √ |
| alpha | 输入 | 待进行axpy_v2计算的入参,公式中的alphaScalar。 | shape为[]。 | FLOAT、FLOAT16、BFLOAT16、INT32 | ND | 0-8 | √ |
| out | 输出 | 待进行axpy_v2计算的出参,公式中的dstTensor。 | shape与x1相同。 | FLOAT、FLOAT16、BFLOAT16、INT32 | ND | 0-8 | √ |
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_axpy_v2 | 通过aclnnAxpyV2接口方式调用AxpyV2算子。 |
贡献说明
| 贡献者 | 贡献方 | 贡献算子 | 贡献时间 | 贡献内容 |
|---|---|---|---|---|
| Nice_try | 个人开发者 | AxpyV2 | 2025/11/25 | AxpyV2算子适配开源仓 |