文件最后提交记录最后更新时间
新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !2408 merge add_matrix_0423 into master 新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 新增 matrix_diag_part_v3matrix_diag_v3 两个 AICPU 算子,实现对矩阵对角线的提取和构造功能。 ### 变更内容 1. **matrix_diag_part_v3**: 提取矩阵的对角线元素 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 2. **matrix_diag_v3**: 根据对角线元素构造矩阵 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 3. 更新算子列表文档 (docs/zh/op_list.md) ## 关联的Issue #1409 ## 测试 根据代码变更,测试场景如下: 1. **单元测试** - matrix_diag_part_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_part_v3.cpp - matrix_diag_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_v3.cpp - 执行单元测试验证算子功能正确性 2. **功能验证** - 运行示例代码验证算子基本功能 - matrix_diag_part_v3: examples/test_geir_matrix_diag_part_v3.cpp - matrix_diag_v3: examples/test_geir_matrix_diag_v3.cpp ``` [2026-04-29 12:50:50] previous kernel: registered at ../aten/src/ATen/VmapModeRegistrations.cpp:37 [2026-04-29 12:50:50] new kernel: registered at torch_npu/csrc/aten/RegisterNPU.cpp:18255 (function registerKernel) [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: Output: [(9,-1), (9,-1), (1,2), (9,-1), (9,-1), (3,4)] [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: MatrixDiagV3 example passed [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: Output: [(1,1), (5,0), (9,-3)] [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: MatrixDiagPartV3 example passed [2026-04-29 12:51:27] run test_geir_matrix_diag_part_v3, execute samples success ``` 3. **编译构建测试** - 验证 CMake 配置正确,算子能正确构建 - 验证自定义算子包能正常安装 ## 文档更新 - 新增 conversion/matrix_diag_part_v3/README.md - 新增 conversion/matrix_diag_v3/README.md - 更新 docs/zh/op_list.md,添加新算子说明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!24081 个月前
新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !2408 merge add_matrix_0423 into master 新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 新增 matrix_diag_part_v3matrix_diag_v3 两个 AICPU 算子,实现对矩阵对角线的提取和构造功能。 ### 变更内容 1. **matrix_diag_part_v3**: 提取矩阵的对角线元素 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 2. **matrix_diag_v3**: 根据对角线元素构造矩阵 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 3. 更新算子列表文档 (docs/zh/op_list.md) ## 关联的Issue #1409 ## 测试 根据代码变更,测试场景如下: 1. **单元测试** - matrix_diag_part_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_part_v3.cpp - matrix_diag_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_v3.cpp - 执行单元测试验证算子功能正确性 2. **功能验证** - 运行示例代码验证算子基本功能 - matrix_diag_part_v3: examples/test_geir_matrix_diag_part_v3.cpp - matrix_diag_v3: examples/test_geir_matrix_diag_v3.cpp ``` [2026-04-29 12:50:50] previous kernel: registered at ../aten/src/ATen/VmapModeRegistrations.cpp:37 [2026-04-29 12:50:50] new kernel: registered at torch_npu/csrc/aten/RegisterNPU.cpp:18255 (function registerKernel) [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: Output: [(9,-1), (9,-1), (1,2), (9,-1), (9,-1), (3,4)] [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: MatrixDiagV3 example passed [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: Output: [(1,1), (5,0), (9,-3)] [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: MatrixDiagPartV3 example passed [2026-04-29 12:51:27] run test_geir_matrix_diag_part_v3, execute samples success ``` 3. **编译构建测试** - 验证 CMake 配置正确,算子能正确构建 - 验证自定义算子包能正常安装 ## 文档更新 - 新增 conversion/matrix_diag_part_v3/README.md - 新增 conversion/matrix_diag_v3/README.md - 更新 docs/zh/op_list.md,添加新算子说明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!24081 个月前
fix(aicpu): correct op def config for math ops Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !2876 merge opdeffix into master fix(aicpu): correct op def config for math ops Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 修正一批 math 仓 AICPU 算子的 op def 配置信息错误。 本次修改主要覆盖 opsFlag、subTypeOfInferShape、formatAgnostic 等配置项;其中与默认配置一致的场景,优先回收为默认值,减少冗余显式配置。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1633 ## 测试 完成静态检查与配置项比对,确认相关算子的 def 配置修改后符合预期。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!287610 天前
新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !2408 merge add_matrix_0423 into master 新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 新增 matrix_diag_part_v3matrix_diag_v3 两个 AICPU 算子,实现对矩阵对角线的提取和构造功能。 ### 变更内容 1. **matrix_diag_part_v3**: 提取矩阵的对角线元素 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 2. **matrix_diag_v3**: 根据对角线元素构造矩阵 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 3. 更新算子列表文档 (docs/zh/op_list.md) ## 关联的Issue #1409 ## 测试 根据代码变更,测试场景如下: 1. **单元测试** - matrix_diag_part_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_part_v3.cpp - matrix_diag_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_v3.cpp - 执行单元测试验证算子功能正确性 2. **功能验证** - 运行示例代码验证算子基本功能 - matrix_diag_part_v3: examples/test_geir_matrix_diag_part_v3.cpp - matrix_diag_v3: examples/test_geir_matrix_diag_v3.cpp ``` [2026-04-29 12:50:50] previous kernel: registered at ../aten/src/ATen/VmapModeRegistrations.cpp:37 [2026-04-29 12:50:50] new kernel: registered at torch_npu/csrc/aten/RegisterNPU.cpp:18255 (function registerKernel) [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: Output: [(9,-1), (9,-1), (1,2), (9,-1), (9,-1), (3,4)] [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: MatrixDiagV3 example passed [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: Output: [(1,1), (5,0), (9,-3)] [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: MatrixDiagPartV3 example passed [2026-04-29 12:51:27] run test_geir_matrix_diag_part_v3, execute samples success ``` 3. **编译构建测试** - 验证 CMake 配置正确,算子能正确构建 - 验证自定义算子包能正常安装 ## 文档更新 - 新增 conversion/matrix_diag_part_v3/README.md - 新增 conversion/matrix_diag_v3/README.md - 更新 docs/zh/op_list.md,添加新算子说明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!24081 个月前
新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !2408 merge add_matrix_0423 into master 新增 matrix_diag_part_v3 和 matrix_diag_v3 两个 AICPU 算子 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 新增 matrix_diag_part_v3matrix_diag_v3 两个 AICPU 算子,实现对矩阵对角线的提取和构造功能。 ### 变更内容 1. **matrix_diag_part_v3**: 提取矩阵的对角线元素 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 2. **matrix_diag_v3**: 根据对角线元素构造矩阵 - 新增算子原型定义 (op_graph) - 新增 AICPU kernel 实现 - 新增单元测试 - 新增示例代码 3. 更新算子列表文档 (docs/zh/op_list.md) ## 关联的Issue #1409 ## 测试 根据代码变更,测试场景如下: 1. **单元测试** - matrix_diag_part_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_part_v3.cpp - matrix_diag_v3: tests/ut/op_kernel_aicpu/test_matrix_diag_v3.cpp - 执行单元测试验证算子功能正确性 2. **功能验证** - 运行示例代码验证算子基本功能 - matrix_diag_part_v3: examples/test_geir_matrix_diag_part_v3.cpp - matrix_diag_v3: examples/test_geir_matrix_diag_v3.cpp ``` [2026-04-29 12:50:50] previous kernel: registered at ../aten/src/ATen/VmapModeRegistrations.cpp:37 [2026-04-29 12:50:50] new kernel: registered at torch_npu/csrc/aten/RegisterNPU.cpp:18255 (function registerKernel) [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: Output: [(9,-1), (9,-1), (1,2), (9,-1), (9,-1), (3,4)] [2026-04-29 12:50:52] 2026-04-29 12:50:52,000 - INFO - [XIR]: MatrixDiagV3 example passed [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: Output: [(1,1), (5,0), (9,-3)] [2026-04-29 12:51:25] 2026-04-29 12:51:25,000 - INFO - [XIR]: MatrixDiagPartV3 example passed [2026-04-29 12:51:27] run test_geir_matrix_diag_part_v3, execute samples success ``` 3. **编译构建测试** - 验证 CMake 配置正确,算子能正确构建 - 验证自定义算子包能正常安装 ## 文档更新 - 新增 conversion/matrix_diag_part_v3/README.md - 新增 conversion/matrix_diag_v3/README.md - 更新 docs/zh/op_list.md,添加新算子说明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!24081 个月前
matrixDiagPartV3和matrixDiagV3资料刷新 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !2558 merge document_modify_0429 into master matrixDiagPartV3和matrixDiagV3资料刷新 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 修正 MatrixDiagPartV3 和 MatrixDiagV3 README 文档约束说明: 1. MatrixDiagPartV3 README:删除 padding_value 的“必须为标量Tensor”表述。 2. MatrixDiagV3 README: - 删除 num_rowsnum_cols 的“标量输入”表述 - 删除 padding_value 的“必须为标量”表述 - 删除约束说明中的“num_rowsnum_cols必须为标量Tensor” ## 关联的Issue #1441 ## 测试 根据代码变更,测试场景如下: 1. **文档审查测试** - 对照 matrix_diag_part_v3_proto.hmatrix_diag_v3_proto.h 核对 README 约束说明 - 验证删除的“标量Tensor/标量输入”限制不是 proto.h 明确声明内容 2. **代码一致性验证** - 核对 MatrixDiagV3 输出秩规则与 proto.h、TensorFlow 语义一致 - 核对对角线带相关 shape 约束与当前实现一致 ## 文档更新 - 更新 conversion/matrix_diag_part_v3/README.md - 更新 conversion/matrix_diag_v3/README.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!25581 个月前
README.md

MatrixDiagV3

产品支持情况

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

功能说明

  • 算子功能:根据输入的单条或多条对角线值生成矩阵,对角线带之外的位置使用padding_value\mathrm{padding\_value}填充。
  • 设输出张量最后两维大小分别为num_rows\mathrm{num\_rows}num_cols\mathrm{num\_cols}k=[kl,ku]k=[k_l, k_u]表示待写入的对角线范围,单对角线场景下kl=kuk_l = k_u。令d=j−id = j - i表示位置(i,j)(i, j)所在的对角线编号,则最大对角线长度为:

max_diag_len=min⁡(num_rows+min⁡(ku,0), num_cols−max⁡(kl,0))\mathrm{max\_diag\_len} = \min(\mathrm{num\_rows} + \min(k_u, 0),\ \mathrm{num\_cols} - \max(k_l, 0))

输出元素满足:

y...,i,j={x...,ku−d, p(i,j)kl≤d≤kupadding_valueotherwisey_{..., i, j} = \begin{cases} x_{..., k_u - d,\ p(i, j)} & k_l \le d \le k_u \\ \text{padding\_value} & \text{otherwise} \end{cases}

其中,p(i,j)p(i, j)表示对角线元素在输入xx最后一维中的位置,具体由属性align控制左右对齐方式。当kk为单个整数或kl=kuk_l = k_u时,xx表示单条对角线;当kl<kuk_l < k_u时,xx表示对角线带。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 公式中的`x`。当`k`表示单条对角线时,`x`的最后一维保存该对角线的数据;当`k`表示对角线带时,`x`的倒数第二维保存对角线条数,最后一维保存各对角线按`align`补齐后的数据。 DOUBLE、FLOAT、FLOAT16、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64、COMPLEX64、COMPLEX128、BOOL ND
k 输入 公式中的kl和ku。可以是标量,表示单条对角线;也可以是长度为2的向量,表示对角线带的下界和上界。 INT32 ND
num_rows 输入 输出矩阵的行数,即公式中的`num_rows`。取值为`-1`时表示由`k`和`x`自动推导。 INT32 ND
num_cols 输入 输出矩阵的列数,即公式中的`num_cols`。取值为`-1`时表示由`k`和`x`自动推导。 INT32 ND
padding_value 输入 公式中的`padding_value`。用于填充不在指定对角线带内的位置,数据类型与`x`一致。 DOUBLE、FLOAT、FLOAT16、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64、COMPLEX64、COMPLEX128、BOOL ND
align 可选属性 指定超对角线和次对角线的对齐方式。支持`RIGHT_LEFT`、`LEFT_RIGHT`、`LEFT_LEFT`、`RIGHT_RIGHT`,默认值为`RIGHT_LEFT`。 STRING -
y 输出 公式中的`y`,表示生成后的矩阵张量,数据类型与`x`一致。当`k`为单个元素或`k[0] == k[1]`时,`y`的秩为`x`的秩加1;否则`y`的秩与`x`一致。 DOUBLE、FLOAT、FLOAT16、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64、COMPLEX64、COMPLEX128、BOOL ND

约束说明

  • x的秩至少为1。
  • k的元素个数只能为1或2;当k为2个元素时,必须满足k[0] <= k[1]
  • k表示对角线带时,x的倒数第二维长度必须等于ku−kl+1k_u - k_l + 1,最后一维长度必须等于max_diag_len\mathrm{max\_diag\_len}

调用说明

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