| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 6 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 7 个月前 | ||
| 1 个月前 |
SparseTensorDenseMatMul
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:稀疏矩阵乘法,将由x1_indices、x1_values、x1_shape表示的稀疏矩阵x1乘以稠密矩阵x2,得到结果矩阵y。要求x1、x2、y的rank均为2。
-
计算公式:
y=x1×x2y = x1 \times x2
稀疏矩阵x1由三部分描述:非零元素索引
x1_indices(shape为 [nnz, 2])、非零元素值x1_values(shape为 [nnz])、矩阵形状x1_shape(shape为 [2],值为 [m, n])。稠密矩阵x2的shape为 [n, p]。当adjoint_a=false、adjoint_b=false时:
yi,j=∑kx1i,k⋅x2k,jy_{i,j} = \sum_{k} x1_{i,k} \cdot x2_{k,j}
其中 x1i,kx1_{i,k} 为0(不在x1_indices中)或取x1_values中对应位置的值。
当adjoint_a=true时,x1先转置再参与矩阵乘;当adjoint_b=true时,x2先转置再参与矩阵乘。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1_indices | 输入 | 稀疏矩阵中非零元素的索引,形状为 [nnz, 2],其中nnz为非零元素个数。 | INT32, INT64 | ND |
| x1_values | 输入 | 稀疏矩阵中非零元素的值,形状为 [nnz]。 | FLOAT16, FLOAT, INT32 | ND |
| x1_shape | 输入 | 稀疏矩阵的稠密形状,形状为 [2],值为 [m, n](若x1转置,即adjoint_a输入true,则值为 [n, m])。 | INT64 | ND |
| x2 | 输入 | 稠密矩阵,形状为 [n, p](若x2转置,则形状为 [p, n])。 | FLOAT16, FLOAT, INT32 | ND |
| y | 输出 | 输出稠密矩阵,形状为 [m, p],数据类型与x1_values一致。 | FLOAT16, FLOAT, INT32 | ND |
| adjoint_a | 属性 | 是否对稀疏矩阵x1取转置,默认为false。 | BOOL | - |
| adjoint_b | 属性 | 是否对稠密矩阵x2取转置,默认为false。 | BOOL | - |
约束说明
- x1_values和x2的数据类型必须一致。
- x1_indices支持INT32和INT64两种类型,与x1_values的类型自由组合。
- m、n、p、nnz、
m*p、n*p、nnz*p的值需在[0, INT32_MAX)范围内。 - nnz的值需在
[0, m*n]范围内。 - 不支持确定性计算。
- 不支持非连续Tensor。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_sparse_tensor_dense_mat_mul | 通过算子IR等方式调用SparseTensorDenseMatMul算子。 |