文件最后提交记录最后更新时间
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 个月前
update operators Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !916 merge master into master update operators Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 增强以下算子功能 tensor_equal tensor_move tril triu stalessrandomuniform stalessrandomnormal assign dsarandomuniform dsarandomnormal ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> #530 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!9164 个月前
新增编译选项module_extension,以便联合modext仓的信息库文件联合编译;删除开源仓中的mc62cm12的信息库 Co-authored-by: lu-yukun<luyukun4@h-partners.com> # message auto-generated for no-merge-commit merge: !2187 merge br_delete_mc62cm12a into master 新增编译选项module_extension,以便联合modext仓的信息库文件联合编译;删除开源仓中的mc62cm12的信息库 Created-by: lu-yukun Commit-by: lu-yukun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增编译选项module_extension,以便联合modext仓文件,进行联合编译;删除mc62cm12的信息库 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1224 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!21871 个月前
concat、concat_d、concat_v2算子编译优化 Co-authored-by: magicjason0007<wangdongxu20@huawei.com> # message auto-generated for no-merge-commit merge: !1147 merge master into master concat、concat_d、concat_v2算子编译优化 Created-by: magicjason0007 Commit-by: magicjason0007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> concat、concat_d、concat_v2算子编译优化,通过dtype宏隔离的方式优化编译速度 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> st、david 冒烟pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!11473 个月前
feat: migrate math+conversion json ops to opdef pipeline Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !2130 merge mathdef into master feat: migrate math+conversion json ops to opdef pipeline Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 math仓aicpu算子信息库由json融合修改为op def文件,修改注册方式以及工程适配 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1271 ## 测试 本次按 ENABLE_CUSTOM=ON 的 custom 路径验收,已验证 OpDef -> libaicpu_ops.so -> op_build --aicpu -> aicpu_kernel.ini -> parser_ini.py -> cust_aicpu_kernel.json 链路跑通,相关产物已生成并校验通过。AICPU before/after 与 I/O 对比已按新规则重评:input/output -> input0/output0 视为规范化差异;RightShift、SearchSorted、Sinh 在整改前 JSON 缺 I/O,但已对齐 CANN 基线 aicpu_kernel.ini,不判缺失;AddN: input0 -> dynamic_input0 和 AddFake -> Add 也已确认接受,不作为阻塞项。 AICore 回归已补做,before/after 经 parser_ini.py 转 json 后无差异。综合结论:本提交满足当前 OpDef 整改验收标准,可通过。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!21301 个月前
optimize the performance of aicpu concatv2 operator Co-authored-by: ZhaiPeiChao<zhaipeichao@huawei.com> # message auto-generated for no-merge-commit merge: !2395 merge master into master optimize the performance of aicpu concatv2 operator Created-by: ZhaiPeiChao Commit-by: ZhaiPeiChao Merged-by: cann-robot Description: ## 描述 对 conversion/concat_v2 aicpu 算子进行性能优化重构。 **修改位置** - conversion/concat_v2/op_kernel_aicpu/concat_v2_aicpu.h - conversion/concat_v2/op_kernel_aicpu/concat_v2_aicpu.cpp - conversion/concat_v2/tests/ut/op_kernel_aicpu/test_concat_v2.cpp **修改原因与方法** 原实现在热路径上存在多项性能与工程规范问题,导致小张量多输入场景延迟偏高、多核扩展性受限: 1. **去除 Eigen 与 shared_ptr 抽象层**:原代码每个输入都 std::make_shared<Eigen::TensorMap<...>> 构造访问器,一次 Compute 产生 N 次堆分配,热路径存在两层指针解引用(shared_ptr → TensorMap → data),并因 shared_ptr 控制块在 shard 间拷贝导致引用计数原子 RMW 造成跨核 cache-line ping-pong。改为 POD 描述符 ConcatV2InputDesc{const T* base; int64_t dim1},在 Prepare 阶段一次性构建,热路径零分配、单层解引用。 2. **按自然边界(整行 / 输入区间)并行**:原 ParallelFor 使用元素级 grain(sizeof(T)),每个 shard 要处理"首尾半行"边界,分支多、memcpy 长度不稳定、任务数量级过大。改为按行切分(ByRow 路径)或按输入区间切分(ByInput 路径),per_unit_size 传整行字节数,shard 永远对齐到自然边界,每段都能走 libc memcpy ifunc 快路径。 3. **退化形态专用分支**:flat_dim0 == 1(含 axis=0、一维)场景走 ByInput 路径,通过前缀 offset + 输出区间切分让各 shard 写入不相交区间,彻底消除 false sharing;N == 1、空输入等也做前置处理。 4. **热内核函数 static 模板化 + 显式捕获 lambda**:CopyOneRow 改为头文件中的 static 模板函数,去 this 指针便于跨 TU 内联;并行 lambda 由默认捕获 [this, &...] 改为显式捕获,同时用 std::atomic<uint32_t> + memory_order_relaxed 收敛 shard 错误,避免原实现中 memcpy_s 失败被静默。 5. **合规与可维护性**:reinterpret_cast 替换为 aicpu::PtrToPtrCompute 拆分为 CheckParams / ParseInputs / ValidateShapes / DoCompute<T> 等小函数(单函数 ≤ 50 行、圈复杂度 ≤ 5);不改成员的方法加 const;关键路径补 KERNEL_LOG_INFO,错误分支补 KERNEL_LOG_ERROR 含上下文信息;CPU 核使用策略(是否预留)与原实现一致。 6. **UT 扩展**:在原 16 例基础上新增 9 例(共 25 例),覆盖新增的 ByRow/ByInput 分派路径、axis=0 与一维退化形态、N=1、空输入、多 dtype、错误路径,保证优化前后行为严格等价。 ## 关联的Issue [#1342](https://gitcode.com/cann/ops-math/issues/1342) ## 测试 - **UT 全量回归**:直接 cmake 构建 math_aicpu_op_kernel_ut(绕开 build.sh --opkernel_aicpu_testUT_TARGETS=() 已知 bug),25 例 UT 全部通过,覆盖常规路径、退化形态、错误路径、全部支持的 dtype。 - **等价性验证**:独立 microbench 对 7 个典型输入场景(小张量 × N 大、中等带宽、大张量、axis=0、N=1 等)执行 std::memcmp 逐字节比对,新旧实现输出完全一致。 - **性能验证**:在 1 / 4 / 10 三档线程下采集实测数据,典型场景加速 1.8×–7.6×。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!23951 个月前
适配PG short_soc_version Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !2804 merge mc62 into master 适配PG short_soc_version Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子适配PG特性,将math仓 mc62cm12a/MC62CM12A 改成 mc62/MC62 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1732 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!28043 天前
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!18992 个月前
README.md

ConcatV2

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2推理产品
Atlas 推理系列产品
Atlas 训练系列产品

功能说明

  • 算子功能:用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor。
  • 计算流程:
    • 输入:

      • Tensor 列表 x[0], x[1], …, x[N-1]
      • 拼接维度 concat_dim
    • 流程:

      1. 校验所有输入 Tensor 数据类型一致;
      2. 校验除 concat_dim 外所有维度完全相同;
      3. 沿 concat_dim 维度依次拼接: y = ConcatV2(x[0], x[1], ..., x[N-1], axis = concat_dim)
    • 输出:拼接后的 Tensor y

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 动态输入列表,流程图中的输入 x[i]。 BFLOAT16、FLOAT16、FLOAT、DOUBLE、INT32、UINT8、INT16、INT8、COMPLEX64、INT64、QINT8、QUINT8、QINT32、UINT16、COMPLEX128、UINT32、UINT64、QINT16、QUINT16、BOOL、STRING、HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN, FLOAT8_E8M0 ND
concat_dim 输入 指定拼接维度,即计算流程中的 concat_dim。 INT32、INT64 ND
N 可选属性 输入 x 的数量,默认值为 1。 INT -
y 输出 计算流程中的输出 y。 BFLOAT16、FLOAT16、FLOAT、DOUBLE、INT32、UINT8、INT16、INT8、COMPLEX64、INT64、QINT8、QUINT8、QINT32、UINT16、COMPLEX128、UINT32、UINT64、QINT16、QUINT16、BOOL、STRING、HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN, FLOAT8_E8M0 ND
  • Atlas 训练、推理系列产品:不支持BFLOAT16。

约束说明

  • 所有输入 Tensor 在除拼接维度外的形状必须一致。
  • 输入列表 "x" 至少包含 2 个 Tensor。
  • 拼接维度 concat_dim 必须在输入 Tensor 的合法维度范围内。
  • x 中所有 Tensor 数据类型必须一致。
  • 属性 N 指定输入数量,仅用于描述,不影响运行时动态输入列表。

调用说明

调用方式 调用样例 说明
图模式调用 test_geir_concat_v2 通过算子IR构图方式调用ConcatV2算子。