文件最后提交记录最后更新时间
2 个月前
6 个月前
2 个月前
2 个月前
4 个月前
7 个月前
1 个月前
README

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*pn*pnnz*p的值需在[0, INT32_MAX)范围内。
  • nnz的值需在[0, m*n]范围内。
  • 不支持确定性计算。
  • 不支持非连续Tensor。

调用说明

调用方式 样例代码 说明
图模式调用 test_geir_sparse_tensor_dense_mat_mul 通过算子IR等方式调用SparseTensorDenseMatMul算子。