文件最后提交记录最后更新时间
doc tools 工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1938 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!19382 个月前
【社区任务】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)中的对应元素相加。 > ![2de1bd9daead4882f29d80d0b414c97a.png](https://raw.gitcode.com/user-images/assets/7649531/9e148071-34e0-4273-af67-8bb10eebafe8/2de1bd9daead4882f29d80d0b414c97a.png '2de1bd9daead4882f29d80d0b414c97a.png') > 函数说明中,可以确定alpha是Scalar - 计算公式: $$ dstTensor_i = src1Tensor_i + alphaScalar * src2Tensor_i $$ > 对于数据类型为float16和bfloat16,需要类型转换为float32进行计算,另外支持alphaTensor与src1Tensor数据类型不一致。 AxpyV2算子TBE版本的整体流程图如下图所示: ![image.png](https://raw.gitcode.com/user-images/assets/7649531/1f769550-e93c-44f9-846a-faf7848f5b51/image.png 'image.png') > 在对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算子流程见下图。 ![image.png](https://raw.gitcode.com/user-images/assets/7649531/a4d9b8b5-5204-4f65-a347-5bd031bf28c7/image.png 'image.png') ## 关联的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!4794 个月前
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!11143 个月前
refactor: 移除多个算子 tiling 文件中冗余的 tiling_util.h 头文件引用 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !2962 merge master into master refactor: 移除多个算子 tiling 文件中冗余的 tiling_util.h 头文件引用 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 本 PR 对多个算子的 tiling 代码进行头文件引用清理和代码格式化,移除不再需要的 op_host/tiling_util.h 引用,统一代码风格。 ### 改动原因 - 多个算子的 tiling 文件中仍残留 #include "op_host/tiling_util.h" 头文件引用,该头文件已不再被使用,属于冗余依赖 - 部分文件的代码格式不统一(行宽、缩进等),需要进行格式化对齐 ### 改动方法 1. **移除冗余头文件**:在以下 24 个算子的 tiling 文件中移除 #include "op_host/tiling_util.h": - axpy_v2, bitwise_and, diag_part, equal, erf, floor, nan_to_num, pow, pow2, real, real_div, reciprocal, reduce_max_v2, reduce_min_v2, reduce_sum_v2, round, rsqrt, rsqrt_grad, select_v2, sign, sign_bits_pack, sign_bits_unpack, sqrt, tanh_grad 2. **equal 算子**:额外移除 #include "op_host/tiling_templates_registry.h",替换为 register/op_impl_registry.htiling/platform/platform_ascendc.hgraph/utils/type_utils.h 3. **real 算子**:在移除冗余头文件的基础上,进行代码格式化调整,统一行宽和缩进风格 4. **CI 脚本**(scripts/ci/gen_ci_cmd.py):将 experimental 算子的 CI example 命令生成逻辑从"使用默认算子"改为直接跳过,避免生成无效的测试命令 ## 关联的Issue - #1666 ## 测试 编译验证通过,移除未使用的头文件不影响功能。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构 - 移除冗余头文件引用和代码格式化 See merge request: cann/ops-math!29627 天前
【社区任务】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)中的对应元素相加。 > ![2de1bd9daead4882f29d80d0b414c97a.png](https://raw.gitcode.com/user-images/assets/7649531/9e148071-34e0-4273-af67-8bb10eebafe8/2de1bd9daead4882f29d80d0b414c97a.png '2de1bd9daead4882f29d80d0b414c97a.png') > 函数说明中,可以确定alpha是Scalar - 计算公式: $$ dstTensor_i = src1Tensor_i + alphaScalar * src2Tensor_i $$ > 对于数据类型为float16和bfloat16,需要类型转换为float32进行计算,另外支持alphaTensor与src1Tensor数据类型不一致。 AxpyV2算子TBE版本的整体流程图如下图所示: ![image.png](https://raw.gitcode.com/user-images/assets/7649531/1f769550-e93c-44f9-846a-faf7848f5b51/image.png 'image.png') > 在对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算子流程见下图。 ![image.png](https://raw.gitcode.com/user-images/assets/7649531/a4d9b8b5-5204-4f65-a347-5bd031bf28c7/image.png 'image.png') ## 关联的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!4794 个月前
Arch编码更新 Co-authored-by: liulinxiang<liulinxiang1@huawei.com> # message auto-generated for no-merge-commit merge: !992 merge master1 into master Arch编码更新 Created-by: liulinxiang Commit-by: liulinxiang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!9924 个月前
【社区任务】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)中的对应元素相加。 > ![2de1bd9daead4882f29d80d0b414c97a.png](https://raw.gitcode.com/user-images/assets/7649531/9e148071-34e0-4273-af67-8bb10eebafe8/2de1bd9daead4882f29d80d0b414c97a.png '2de1bd9daead4882f29d80d0b414c97a.png') > 函数说明中,可以确定alpha是Scalar - 计算公式: $$ dstTensor_i = src1Tensor_i + alphaScalar * src2Tensor_i $$ > 对于数据类型为float16和bfloat16,需要类型转换为float32进行计算,另外支持alphaTensor与src1Tensor数据类型不一致。 AxpyV2算子TBE版本的整体流程图如下图所示: ![image.png](https://raw.gitcode.com/user-images/assets/7649531/1f769550-e93c-44f9-846a-faf7848f5b51/image.png 'image.png') > 在对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算子流程见下图。 ![image.png](https://raw.gitcode.com/user-images/assets/7649531/a4d9b8b5-5204-4f65-a347-5bd031bf28c7/image.png 'image.png') ## 关联的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!4794 个月前
doc tools 工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1938 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!19382 个月前
README.md

AxpyV2

产品支持情况

产品 是否支持
Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

功能说明

  • 算子功能:源操作数2(src2Tensor)中每个元素与标量(alphaScalar)对应元素求积后和源操作数1(src1Tensor)中的对应元素相加。

  • 计算公式:

dstTensori=src1Tensori+alphaScalar∗src2TensoridstTensor_i = src1Tensor_i + alphaScalar * src2Tensor_i

参数说明

参数名 输入/输出 描述 使用说明 数据类型 数据格式 维度(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算子适配开源仓