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