MatrixDiagV3
【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
- 算子功能:根据输入的单条或多条对角线值生成矩阵,对角线带之外的位置使用$\mathrm{padding_value}$填充。
- 设输出张量最后两维大小分别为$\mathrm{num_rows}$和$\mathrm{num_cols}$,$k=[k_l, k_u]$表示待写入的对角线范围,单对角线场景下$k_l = k_u$。令$d = j - i$表示位置$(i, j)$所在的对角线编号,则最大对角线长度为:
$$ \mathrm{max_diag_len} = \min(\mathrm{num_rows} + \min(k_u, 0),\ \mathrm{num_cols} - \max(k_l, 0)) $$
输出元素满足:
$$ y_{..., 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)$表示对角线元素在输入$x$最后一维中的位置,具体由属性align控制左右对齐方式。当$k$为单个整数或$k_l = k_u$时,$x$表示单条对角线;当$k_l < k_u$时,$x$表示对角线带。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| 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的倒数第二维长度必须等于$k_u - k_l + 1$,最后一维长度必须等于$\mathrm{max_diag_len}$。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_matrix_diag_v3 | 通过算子IR构图方式调用MatrixDiagV3算子。 |
【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考