| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 个月前 | |
下一代cumsum-diag_part-bias_add-reduce_var-reduce_std_v2算子功能支持 Co-authored-by: qq_57796320<zhushuqin1@huawei.com> # message auto-generated for no-merge-commit merge: !484 merge master into master 下一代cumsum-diag_part-bias_add-reduce_var-reduce_std_v2算子功能支持 Created-by: qq_57796320 Commit-by: qq_57796320 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!484 | 8 个月前 | |
math类onnx算子插件支持 Co-authored-by: x00842564<xuyanke@huawei.com> Co-authored-by: weiyukun<weiyukun2@h-partners.com> # message auto-generated for no-merge-commit merge: !431 merge master into master math类onnx算子插件支持 Created-by: yanke-xu Commit-by: weiyukun;x00842564 Merged-by: cann-robot Description: ## 描述 onnx算子支持列表: 1. addcmul 2. ArgMax 3. ArgMin 4. Bernoulli 5. BitShift 6. Cast 7. Clip 8. Concat 9. ConcatFromSequence 10. Corr 11. CumSum 12. DeformableOffsets 13. DepthToSpace 14. Einsum 15. EyeLike 16. Flatten 17. IsInf 18. Max 19. Mean 20. Min 21. Mod 22. Multinomial 23. NPUDtypeCast 24. NPUFormatCast 25. NPUOneHot 26. NPURotaryMul 27. NPUSignBitsPack 28. NPUSignBitsUnpack 29. NPUSlice 30. OneHot 31. Pad 32. PhonyConcat 33. PhonySplit 34. RandomNormal 35. RandomNormalLike 36. RandomUniform 37. RandomUniformLike 38. ReduceL1 39. ReduceL2 40. ReduceLogSum 41. ReduceLogSumExp 42. ReduceMax 43. ReduceMean 44. ReduceMin 45. ReduceProd 46. ReduceSum 47. ReduceSumSquare 48. RepeatWithPad 49. Reshape 50. ReverseSequence 51. SequenceAt 52. SequenceConstruct 53. SequenceEmpty 54. SequenceErase 55. SequenceInsert 56. SequenceLength 57. Slice 58. SpaceToDepth 59. Split 60. SplitToSequence 61. Squeeze 62. Sum 63. Transpose 64. Trilu 65. Unsqueeze 66. Xor ## 关联的Issue None ## 测试 1、编译构建 2、静态检查 3、冒烟测试 4、本地功能验证 ## 文档更新 None ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!431 | 8 个月前 | |
add transpose and pad series op to opensource new Co-authored-by: lu-yukun<luyukun4@h-partners.com> # message auto-generated for no-merge-commit merge: !891 merge xf_mem_as_new into master add transpose and pad series op to opensource new Created-by: lu-yukun Commit-by: lu-yukun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> add transpose and pad series op to opensource new ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!891 | 7 个月前 | |
下一代cumsum-diag_part-bias_add-reduce_var-reduce_std_v2算子功能支持 Co-authored-by: qq_57796320<zhushuqin1@huawei.com> # message auto-generated for no-merge-commit merge: !484 merge master into master 下一代cumsum-diag_part-bias_add-reduce_var-reduce_std_v2算子功能支持 Created-by: qq_57796320 Commit-by: qq_57796320 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!484 | 8 个月前 | |
cumsum R轴全载场景tiling coredump Co-authored-by: wow5522<wuao1@huawei.com> # message auto-generated for no-merge-commit merge: !2328 merge master_3 into master cumsum R轴全载场景tiling coredump Created-by: wow5523 Commit-by: wow5522 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 优化Cumsum算子(累积和)在特定场景下的UB(Unified Buffer)内存使用策略。原代码在计算UB可容纳的最大M维度因子时,错误地扣除了用于Sklansky算法的固定缓冲区大小,导致UB可用空间计算偏小,可能影响算子性能或导致不必要的UB切分。 修改了RNGreaterClBorrowM函数中mMaxForFullUb的计算逻辑。将计算M维度最大UB因子所使用的UB总大小参数,从原先扣除固定缓冲区(UB_SS_BUFFER_SIZE等)后的剩余值,更正为完整的ubSize_。这更准确地反映了在R维度数据全载入UB的前提下,剩余UB空间可用于加载M维度数据的实际情况,从而可能允许更大的M维度数据块一次性载入UB,提升计算效率。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1306 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 执行出现coredump的用例,是否正常执行 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2328 | 4 个月前 | |
修复cumsum算子core sklansky在尾块的处理越界的问题 Co-authored-by: lu-yukun<luyukun4@h-partners.com> # message auto-generated for no-merge-commit merge: !2261 merge br_cumsum_core_sklansky_tail into master 修复cumsum算子core sklansky在尾块的处理越界的问题 Created-by: lu-yukun Commit-by: lu-yukun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复cumsum算子core sklansky在尾块的处理越界的问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1275 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2261 | 4 个月前 | |
optimize the performance of aicpu cumsum operator Co-authored-by: ZhaiPeiChao<zhaipeichao@huawei.com> # message auto-generated for no-merge-commit merge: !2262 merge master into master optimize the performance of aicpu cumsum operator Created-by: ZhaiPeiChao Commit-by: ZhaiPeiChao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 对Cumsum(累积和)算子的AI CPU内核实现进行了大规模重构与性能优化,旨在解决原实现中计算逻辑复杂、并行策略单一、内存访问模式不佳以及复数类型处理效率低下的问题。同时,对内核头文件进行了代码风格统一和接口规范化重构,并新增了全面的单元测试用例以覆盖不同数据类型、输入形状和并行路径,确保优化后算子的功能正确性与稳定性。 性能瓶颈及优化点: 1. 并行化维度错误 - 原始代码只在 outer 维度上并行。当 axis = -1(最后一个轴)时,outer = 1,导致即使数据量超过 512KB 阈值,也只能用单核计算。 2. 内层循环分支开销 - 原始代码在 depth 循环的每次迭代内检查 if (exclusive) 和 if (reverse)。 3. reverse 方向的冗余索引计算 - reverse 模式下,每次迭代都做条件索引调整: 4. Complex 类型冗余内存分配 - CumsumCompute2 对 complex 类型分配两个完整 vector<double>(real 和 imag),然后逐元素拆分/合并。 5. 不连续内存访问模式(tride-outer 跳跃访问)- 原始代码逐序列处理:对一个 (inner_idx, outer_idx) 的序列,depth 方向的访问地址跳跃 outer * sizeof(T) 字节。 6. 无法向量化 - 原始代码每个序列独立计算,depth 循环内是标量累加 acc += input[index]。 7. 指针别名影响编译器优化 - 编译器无法证明 input_data 和 output_data 指向不重叠的内存区域,它必须保守地假设写入 out_row[o] 可能改变 in_row[o+1] 的值。 8. 下溢风险 - GetCPUNum() 返回 uint32_t,直接减去 kResvCpuNum(=2) 可能导致无符号整数下溢翻转为极大值。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1290](https://gitcode.com/cann/ops-math/issues/1290) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 使用性能优化后代码中,在典型shape下基于Ascend910B环境进行测试,测试结果如下: | 序号 | shape | 优化前/us | 优化后/us | 性能提升 | | -- | -- | -- | -- | -- | |1| [65536] | 270 | 113 | 2.39x | |2| [10485760] | 22696 | 19295 | 1.18x | |3| [8192,1024] | 16518 | 3120 | 4.18x | |4| [1,1000000] | 2027 | 1723 | 1.18x | |5| [2,256,32768] | 36496 | 11100 | 3.29x | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2262 | 4 个月前 | |
optimize the performance of aicpu cumsum operator Co-authored-by: ZhaiPeiChao<zhaipeichao@huawei.com> # message auto-generated for no-merge-commit merge: !2262 merge master into master optimize the performance of aicpu cumsum operator Created-by: ZhaiPeiChao Commit-by: ZhaiPeiChao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 对Cumsum(累积和)算子的AI CPU内核实现进行了大规模重构与性能优化,旨在解决原实现中计算逻辑复杂、并行策略单一、内存访问模式不佳以及复数类型处理效率低下的问题。同时,对内核头文件进行了代码风格统一和接口规范化重构,并新增了全面的单元测试用例以覆盖不同数据类型、输入形状和并行路径,确保优化后算子的功能正确性与稳定性。 性能瓶颈及优化点: 1. 并行化维度错误 - 原始代码只在 outer 维度上并行。当 axis = -1(最后一个轴)时,outer = 1,导致即使数据量超过 512KB 阈值,也只能用单核计算。 2. 内层循环分支开销 - 原始代码在 depth 循环的每次迭代内检查 if (exclusive) 和 if (reverse)。 3. reverse 方向的冗余索引计算 - reverse 模式下,每次迭代都做条件索引调整: 4. Complex 类型冗余内存分配 - CumsumCompute2 对 complex 类型分配两个完整 vector<double>(real 和 imag),然后逐元素拆分/合并。 5. 不连续内存访问模式(tride-outer 跳跃访问)- 原始代码逐序列处理:对一个 (inner_idx, outer_idx) 的序列,depth 方向的访问地址跳跃 outer * sizeof(T) 字节。 6. 无法向量化 - 原始代码每个序列独立计算,depth 循环内是标量累加 acc += input[index]。 7. 指针别名影响编译器优化 - 编译器无法证明 input_data 和 output_data 指向不重叠的内存区域,它必须保守地假设写入 out_row[o] 可能改变 in_row[o+1] 的值。 8. 下溢风险 - GetCPUNum() 返回 uint32_t,直接减去 kResvCpuNum(=2) 可能导致无符号整数下溢翻转为极大值。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1290](https://gitcode.com/cann/ops-math/issues/1290) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 使用性能优化后代码中,在典型shape下基于Ascend910B环境进行测试,测试结果如下: | 序号 | shape | 优化前/us | 优化后/us | 性能提升 | | -- | -- | -- | -- | -- | |1| [65536] | 270 | 113 | 2.39x | |2| [10485760] | 22696 | 19295 | 1.18x | |3| [8192,1024] | 16518 | 3120 | 4.18x | |4| [1,1000000] | 2027 | 1723 | 1.18x | |5| [2,256,32768] | 36496 | 11100 | 3.29x | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2262 | 4 个月前 | |
CMakeList 中增加算子支持的型号 Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !1367 merge CMake into master CMakeList 中增加算子支持的型号 Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> CMakeList 中增加算子支持的型号 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/849 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!1367 | 6 个月前 | |
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 个月前 |
Cumsum
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
- 算子功能:对输入张量self的元素,按照指定维度dim依次进行累加,并将结果保存到输出张量out中。
- 计算公式:x_ix\_{i}x_i是输入张量self中,从维度dim视角来看的某个元素(其它维度下标不变,只dim维度下标依次递增),y_iy\_{i}y_i是输出张量out中对应位置的元素,则:
yi=x1+x2+x3+......+xiy_{i} = x_{1} + x_{2} + x_{3} + ...... + x_{i} yi=x1+x2+x3+......+xi
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 输入Tensor。 | INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64 FLOAT16、FLOAT、DOUBLE、COMPLEX64、COMPLEX128 |
ND |
| axis | 输入 | 需要进行依次累加的维度。 | INT32、INT64 | ND |
| exclusive | 属性 | 默认值为false,表示执行包含性累积求和(inclusive cumsum),即输出的第一个元素与输入的第一个元素相同; true 表示执行排除性累计求和(exclusive cumsum),即输出的第一个元素为0,后续元素为输入的前缀和。 |
BOOL | - |
| reverse | 属性 | 默认值为false,表示从张量的开头向末尾进行累积求和(正向计算); true 表示从张量的末尾向开头进行累积求和(反向计算)。 |
BOOL | - |
| y | 输出 | 按指定维度累加后的输出Tensor。 | 输入Tensor相同x | ND |
约束说明
- 无。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_cumsum_v2 | 通过aclnnCumsumV2接口方式调用cumsum算子。 |
| 图模式调用 | test_geir_cumsum | 通过算子IR构图方式调用cumsum算子。 |