文件最后提交记录最后更新时间
补齐算子opapi覆盖率 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !1352 merge ut into master 补齐算子opapi覆盖率 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补齐算子accumulate_nv2, add, asoch的opapi 覆盖率。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/804 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!13523 个月前
abs等算子A5实现 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !495 merge develop into master abs等算子A5实现 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 新增以下算子的A5实现 |序号| 算子 | 功能 | |--|--|--| |1| abs | 为输入张量的每一个元素取绝对值 | |2| add | 对输入完成相加操作 | |3| addcdiv | 张量运算函数,用于执行乘除加组合操作,将张量除法(带缩放)+ 张量加法合并为单个操作 | |4| addcmul | 张量运算函数,用于执行乘除加组合操作,将张量乘法(带缩放)+ 张量加法合并为单个操作 | |5| axpy | 源操作数中每个元素与标量求积后和目的操作数中的对应元素相加 | |6| bincount | 计算非负整数数组中每个数的频率 | |7| ceil | 返回输入tensor中每个元素向上取整的结果 | |8| clip_by_value_v2 | 将输入的所有元素限制在一定范围内 | |9| concat | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |10| concat_v2 | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |11| equal | 计算两个Tensor是否有相同的大小和元素,返回一个Bool类型 | |12|exp|返回一个新的张量,该张量的每个元素都是输入张量对应元素的指数| |13| fill | 对张量进行填充操作,支持非连续的Tensor操作 | |14| floor | 返回输入Tensor中每个元素向下取整,并将结果回填到输入Tensor中 | |15| floor_div | 完成除法计算,对余数向下取整 | |16| floor_mod | 用于计算两个数的模 | |17| is_neg_inf | 判断输入张量的元素是否为负无穷 | |18| is_pos_inf | 判断输入张量的元素是否为正无穷 | |19| less | 判断输入self中的每个元素是否小于输入other的值,返回一个Bool类型的Tensor | |20| less_equal | 判断输入self中的元素值是否小于等于other的值,并将self的每个元素的值与other值的比较结果写入out中 | |21| logical_and | 对两个输入张量的对应元素执行「与逻辑」判断,输出布尔型张量(True/False) | |22| log | 对输入张量x的元素,逐元素进行对数计算,并将结果保存到输出张量y中 | |23| not_equal | 逐元素比较两个输入张量是否不相等 | |24| ones_like | 返回形状和类型相同的张量,所有元素都设置为1 | |25|sign|对输入的tensor逐元素进行Sign符号函数的运算并输出结果tensor| |26| sqrt | 完成非负数平方根计算,负数情况返回nan | |27| sqrt_grad | 完成梯度平方根计算 | |28| square | 为输入张量的每一个元素计算平方值 | |29| squared_difference | 为第一个输入张量减去第二个输入张量,并计算其平方值 | |30| tanh | 激活函数,返回与输入tensor shape相同的tensor,对输入tensor进行elementwise的计算 | |31| tril | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的右上部分置零 | |32| triu | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的左下部分置零 | |33| zeros_like | 将张量填充为全零 | ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4955 个月前
optimize the performance of aicpu add operator Co-authored-by: ZhaiPeiChao<zhaipeichao@huawei.com> # message auto-generated for no-merge-commit merge: !2462 merge add into master optimize the performance of aicpu add operator Created-by: ZhaiPeiChao Commit-by: ZhaiPeiChao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AICPU add算子性能优化 fast path 负责 ≥99% 真实工作负载(深度学习里 Add 几乎都是 same-shape 或 scalar-bcast),通用 Eigen 路径只兜底多维非平凡 broadcast。 ``` Compute ├─ NormalMathCheck + dtype permission check ├─ 显式 raw-rank ≤ 8 校验 (保持与原实现等价的失败语义) ├─ Bcast::GenerateBcastInfo ├─ 显式 output-shape 一致性校验 ├─ [fast] 同形 shape → AddSameShape ├─ [fast] scalar bcast → AddScalarBcast └─ [fallback] AddGenericBcast → 原 Eigen TensorMap broadcast 路径 ``` Fast path 关键点: - **裸指针 + __restrict__ + 定长循环** → 编译器自动 NEON/AVX 向量化 (对应 V / E)。 - **按 output bytes 阈值动态选择串行 / ParallelFor** (对应 T / O10): - kParallelBytesThresh = 192 KiB:基于 10 μs ParallelFor 固定调度开销 + ~8 GB/s 单核 add 带宽反推 ~160 KiB,取 20% 余量。 - kBytesPerShard = 256 KiB:初版用 32 KiB 在 16 MiB 负载上产生 0.67× 回退(shard 数过多导致线程间抢带宽),调到 256 KiB 后恢复至 1.02×。 - **__builtin_expect(rc != OK, 0)** 标注冷分支,保持 C++17 合规(不使用 C++20 [[likely]])。 - **全部 reinterpret_castPtrToPtr<void,T>** 。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1522](https://gitcode.com/cann/ops-math/issues/1522) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 基于4线程进行测试: | 形状 | dtype | case | old (μs) | new (μs) | **speedup** | |---|---|---|---:|---:|---:| | SameShape | fp32 | 4 KiB | 0.41 | 0.50 | 0.82× | | SameShape | fp32 | 96 KiB | 2.48 | 2.52 | 0.99× | | SameShape | fp32 | 1 MiB | 48.99 | 18.42 | **2.66×** | | SameShape | fp32 | 16 MiB | 766 | 752 | 1.02× | | ScalarBcast | fp32 | 4 KiB | 0.43 | 0.39 | 1.10× | | ScalarBcast | fp32 | 96 KiB | 3.02 | 1.87 | **1.62×** | | ScalarBcast | fp32 | 1 MiB | 31.7 | 8.07 | **3.93×** | | ScalarBcast | fp32 | 16 MiB | 557 | 520 | 1.07× | | SameShape | i64 | 2 MiB | 80 | 37 | **2.16×** | | ScalarBcast | i64 | 8 KiB | 0.38 | 0.14 | **2.77×** | | ScalarBcast | i64 | 192 KiB | 5.99 | 2.04 | **2.94×** | | ScalarBcast | i64 | 2 MiB | 509 | 187 | **2.73×** | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!246210 天前