From 37d6a2085e71b4cb5b23d9b24f9a77a7b550fd13 Mon Sep 17 00:00:00 2001
From: seery_dq <15594872+seery_dq@user.noreply.gitee.com>
Date: Fri, 30 May 2025 15:33:52 +0800
Subject: [PATCH] spmm_csr
---
infiniop/ops/spmm/README.md | 71 +++++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
create mode 100644 infiniop/ops/spmm/README.md
diff --git a/infiniop/ops/spmm/README.md b/infiniop/ops/spmm/README.md
new file mode 100644
index 0000000..5fc384c
--- /dev/null
+++ b/infiniop/ops/spmm/README.md
@@ -0,0 +1,71 @@
+# `SPMM`
+
+`SPMM`,即**稀疏矩阵-矩阵乘法**算子。计算公式为:
+
+$$ dense A' = (sparse) A * (dense) B $$
+
+其中:
+
+- `A` 为稀疏矩阵,通过CSR稀疏格式存储。
+- `B` 为稠密矩阵。
+- `A'` 为输出稠密矩阵。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopSpMM_csr(
+ infiniopHandle_t handle,
+ infiniopSpMVDescriptor_t desc,
+ void *dense_rec,
+ const void *dense_B,
+ size_t M,
+ size_t N,
+ const void *sparse_A_val,
+ const void *row_ptr,
+ const void *col_indices,
+ void *stream
+);
+```
+
+
参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc`:
+ 已使用 `infiniopCreateSpMVDescriptor()` 初始化的算子描述符。
+- `dense_rec`:
+ 计算输出稠密矩阵。张量限制见[创建算子描述](#创建算子描述)部分。
+- `dense_B`:
+ 输入稠密矩阵B。张量限制见[创建算子描述](#创建算子描述)部分。
+- `M`
+ 输入稀疏矩阵A的行数。
+- `N`
+ 输入稀疏矩阵A的列数。
+- `sparse_A_val`:
+ 稀疏矩阵的非零元值。张量限制见[创建算子描述](#创建算子描述)部分。
+- `row_ptr`:
+ 稀疏矩阵的行偏移。张量限制见[创建算子描述](#创建算子描述)部分。
+- `col_indices`:
+ 稀疏矩阵的列索引。张量限制见[创建算子描述](#创建算子描述)部分。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+
+
+
+[`InfiniopHandle_t`]: /handle/README.md
+
+[`INFINI_STATUS_SUCCESS`]:/common/status/README.md#INFINI_STATUS_SUCCESS
+[`INFINI_STATUS_BAD_PARAM`]:/common/status/README.md#INFINI_STATUS_BAD_PARAM
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`]:/common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
+[`INFINI_STATUS_BAD_TENSOR_SHAPE`]:/common/status/README.md#INFINI_STATUS_BAD_TENSOR_SHAPE
+[`INFINI_STATUS_BAD_TENSOR_DTYPE`]:/common/status/README.md#INFINI_STATUS_BAD_TENSOR_DTYPE
+[`INFINI_STATUS_BAD_TENSOR_STRIDES`]:/common/status/README.md#INFINI_STATUS_BAD_TENSOR_STRIDES