diff --git a/infiniop/ops/README.md b/infiniop/ops/README.md
index 0633ec6..51535db 100644
--- a/infiniop/ops/README.md
+++ b/infiniop/ops/README.md
@@ -1,14 +1,23 @@
# `InfiniOP` 算子列表
- [`Add`](/infiniop/ops/add/README.md)
+- [`And`](/infiniop/ops/and/README.md)
- [`Causal Softmax`](/infiniop/ops/causal_softmax/README.md)
- [`Clip`](/infiniop/ops/clip/README.md)
+- [`CrossEntropyLossBackward`](/infiniop/ops/crossentropyloss_backward/README.md)
+- [`Div`](/infiniop/ops/div/README.md)
+- [`Equal`](/infiniop/ops/equal/README.md)
- [`GEMM`](/infiniop/ops/gemm/README.md)
+- [`Gelu`](/infiniop/ops/gelu/README.md)
+- [`Gelu Backward`](/infiniop/ops/gelu_backward/README.md)
- [`Mul`](/infiniop/ops/mul/README.md)
+- [`Or`](/infiniop/ops/or/README.md)
- [`Random Sample`](/infiniop/ops/random_sample/README.md)
- [`Rearrange`](/infiniop/ops/rearrange/README.md)
+- [`ReLU Backward`](/infiniop/ops/relu_backward/README.md)
- [`RMS Norm`](/infiniop/ops/rms_norm/README.md)
- [`RoPE`](/infiniop/ops/rope/README.md)
+- [`Silu`](/infiniop/ops/silu/README.md)
- [`Softmax`](/infiniop/ops/softmax/README.md)
- [`Sub`](/infiniop/ops/sub/README.md)
- [`SwiGLU`](/infiniop/ops/swiglu/README.md)
diff --git a/infiniop/ops/and/README.md b/infiniop/ops/and/README.md
new file mode 100644
index 0000000..1d2304b
--- /dev/null
+++ b/infiniop/ops/and/README.md
@@ -0,0 +1,138 @@
+# And 算子
+
+And 算子用于执行张量的逐元素逻辑与运算。该算子参考 `torch.logical_and` 的行为。
+
+## 数学定义
+
+给定两个布尔张量 $a$ 和 $b$,And 算子的计算公式为:
+
+$$c = \text{and}(a, b) = a \land b$$
+
+其中 $c$ 是输出张量,$a$ 和 $b$ 是输入张量。该算子支持多向广播。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopAnd(
+ infiniopAndDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ void *stream
+);
+```
+
+
参数:
+
+- `desc`:
+ 已使用 `infiniopCreateAndDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `c`:
+ 计算结果地址,支持原位计算。
+- `a`:
+ 输入张量 `a` 的数据指针。
+- `b`:
+ 输入张量 `b` 的数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateAndDescriptor(
+ infiniopHandle_t handle,
+ infiniopAndDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c,
+ infiniopTensorDescriptor_t a,
+ infiniopTensorDescriptor_t b
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopAndDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `c` - { BOOL | (d1,...,dn) | (...) }:
+ 算子计算参数 `c` 的张量描述,支持原位计算。
+- `a` - { BOOL | (d1,...,dn) | (...) }:
+ 算子计算参数 `a` 的张量描述,支持原位计算,支持多向广播。
+- `b` - { BOOL | (d1,...,dn) | (...) }:
+ 算子计算参数 `b` 的张量描述,支持原位计算,支持多向广播。
+
+参数限制:
+
+- 所有张量的数据类型必须为 `Bool`。
+- 输入 `a` 与 `b` 的形状需与 `c` 相同。`a` 与 `b` 涉及多向广播时需调整步长以匹配多向广播的映射关系。
+- 支持原位计算,即计算时 `c` 可以和 `a` 或 `b` 指向同一地址。
+- 计算输出参数 `c` 不能进行广播(`c` 的步长不能涉及广播设置,即步长不能有 0)。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_BAD_TENSOR_STRIDES`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetAndWorkspaceSize(
+ infiniopAndDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateAndDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyAndDescriptor(
+ infiniopAndDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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
+[`INFINI_STATUS_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/crossentropyloss_backward/README.md b/infiniop/ops/crossentropyloss_backward/README.md
new file mode 100644
index 0000000..5cfd28a
--- /dev/null
+++ b/infiniop/ops/crossentropyloss_backward/README.md
@@ -0,0 +1,144 @@
+# CrossEntropyLoss Backward 算子
+
+CrossEntropyLoss Backward 算子用于计算交叉熵损失函数的反向传播梯度。该算子参考 `torch.nn.CrossEntropyLoss` 的反向传播行为。
+
+## 数学定义
+
+给定概率分布 $p$ 和目标标签 $t$,CrossEntropyLoss Backward 算子的计算公式为:
+
+$$\frac{\partial L}{\partial \text{logits}_i} = p_i - \mathbf{1}_{t=i}$$
+
+其中:
+- $p_i$ 是经过 softmax 后的概率分布中第 $i$ 个类别的概率
+- $\mathbf{1}_{t=i}$ 是指示函数,当目标标签 $t$ 等于 $i$ 时为 1,否则为 0
+- $\frac{\partial L}{\partial \text{logits}_i}$ 是对 logits 第 $i$ 个元素的梯度
+
+对于批量处理,每个样本的梯度计算相互独立。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopCrossEntropyLossBackward(
+ infiniopCrossEntropyLossBackwardDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *grad_logits,
+ const void *probs,
+ const void *target,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateCrossEntropyLossBackwardDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `grad_logits`:
+ logits 梯度的计算结果地址,支持原位计算。
+- `probs`:
+ 经过 softmax 后的概率分布张量数据指针。
+- `target`:
+ 目标标签张量数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateCrossEntropyLossBackwardDescriptor(
+ infiniopHandle_t handle,
+ infiniopCrossEntropyLossBackwardDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t grad_logits,
+ infiniopTensorDescriptor_t probs,
+ infiniopTensorDescriptor_t target
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopCrossEntropyLossBackwardDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `grad_logits` - { FP16 | FP32 | BF16 | (batch_size, num_classes) | (...) }:
+ logits 梯度张量描述,支持原位计算。
+- `probs` - { FP16 | FP32 | BF16 | (batch_size, num_classes) | (...) }:
+ 概率分布张量描述,支持原位计算。
+- `target` - { INT32 | INT64 | (batch_size,) | (...) }:
+ 目标标签张量描述。
+
+参数限制:
+
+- `grad_logits` 和 `probs` 张量的数据类型必须相同,支持 `FP16`、`FP32`、`BF16`。
+- `target` 张量的数据类型必须为 `INT32` 或 `INT64`。
+- `grad_logits` 和 `probs` 张量的形状必须相同,通常为 `(batch_size, num_classes)`。
+- `target` 张量的形状必须为 `(batch_size,)`,包含每个样本的目标类别索引。
+- 支持原位计算,即计算时 `grad_logits` 可以和 `probs` 指向同一地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_BAD_TENSOR_STRIDES`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetCrossEntropyLossBackwardWorkspaceSize(
+ infiniopCrossEntropyLossBackwardDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateCrossEntropyLossBackwardDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyCrossEntropyLossBackwardDescriptor(
+ infiniopCrossEntropyLossBackwardDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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
+[`INFINI_STATUS_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/div/README.md b/infiniop/ops/div/README.md
new file mode 100644
index 0000000..e4a2fd9
--- /dev/null
+++ b/infiniop/ops/div/README.md
@@ -0,0 +1,138 @@
+# Div 算子
+
+Div 算子用于执行张量的逐元素除法运算。该算子参考 `torch.div` 的行为。
+
+## 数学定义
+
+给定两个张量 $a$ 和 $b$,Div 算子的计算公式为:
+
+$$c = \text{div}(a, b) = \frac{a}{b}$$
+
+其中 $c$ 是输出张量,$a$ 和 $b$ 是输入张量。该算子支持多向广播。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopDiv(
+ infiniopDivDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateDivDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `c`:
+ 计算结果地址,支持原位计算。
+- `a`:
+ 输入张量 `a` 的数据指针。
+- `b`:
+ 输入张量 `b` 的数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateDivDescriptor(
+ infiniopHandle_t handle,
+ infiniopDivDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c,
+ infiniopTensorDescriptor_t a,
+ infiniopTensorDescriptor_t b
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopDivDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `c` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `c` 的张量描述,支持原位计算。
+- `a` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `a` 的张量描述,支持原位计算,支持多向广播。
+- `b` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `b` 的张量描述,支持原位计算,支持多向广播。
+
+参数限制:
+
+- `dT`: (`Float16`, `Float32`, `BFloat16`) 之一。
+- 输入 `a` 与 `b` 的形状需与 `c` 相同。`a` 与 `b` 涉及多向广播时需调整步长以匹配多向广播的映射关系。
+- 支持原位计算,即计算时 `c` 可以和 `a` 或 `b` 指向同一地址。
+- 计算输出参数 `c` 不能进行广播(`c` 的步长不能涉及广播设置,即步长不能有 0)。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_BAD_TENSOR_STRIDES`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetDivWorkspaceSize(
+ infiniopDivDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateDivDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyDivDescriptor(
+ infiniopDivDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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
+[`INFINI_STATUS_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/equal/README.md b/infiniop/ops/equal/README.md
new file mode 100644
index 0000000..55e2e8d
--- /dev/null
+++ b/infiniop/ops/equal/README.md
@@ -0,0 +1,140 @@
+# Equal 算子
+
+Equal 算子比较两个输入张量是否完全相等,返回一个布尔标量。该算子参考 `torch.equal` 的行为。
+
+## 数学定义
+
+给定两个张量 $a$ 和 $b$,Equal 算子的计算公式为:
+
+$$c = \text{equal}(a, b) = \begin{cases}
+\text{true} & \text{if } a = b \text{ (形状和所有元素都相同)} \\
+\text{false} & \text{otherwise}
+\end{cases}$$
+
+其中 $c$ 是输出的布尔标量,$a$ 和 $b$ 是输入张量。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopEqual(
+ infiniopEqualDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateEqualDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `c`:
+ 计算结果地址,类型为布尔标量。
+- `a`:
+ 输入张量 `a` 的数据指针。
+- `b`:
+ 输入张量 `b` 的数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateEqualDescriptor(
+ infiniopHandle_t handle,
+ infiniopEqualDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c,
+ infiniopTensorDescriptor_t a,
+ infiniopTensorDescriptor_t b
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopEqualDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `c` - { BOOL | () | (...) }:
+ 计算结果 `c` 的张量描述,必须是布尔标量。
+- `a` - { dT | (d1,...,dn) | (...) }:
+ 输入张量 `a` 的张量描述,支持多向广播。
+- `b` - { dT | (d1,...,dn) | (...) }:
+ 输入张量 `b` 的张量描述,支持多向广播。
+
+参数限制:
+
+- `dT`: 所有合法类型(`Float16`, `Float32`, `Float64`, `BFloat16`, `Int8`, `Int16`, `Int32`, `Int64`, `Uint8`, `Uint16`, `Uint32`, `Uint64`, `Bool`)。
+- 输入张量 `a` 和 `b` 必须具有相同的形状和数据类型。
+- 输出 `c` 必须是布尔标量(形状为空或所有维度为1)。
+- 不支持原位计算。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetEqualWorkspaceSize(
+ infiniopEqualDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateEqualDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyEqualDescriptor(
+ infiniopEqualDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/gelu/README.md b/infiniop/ops/gelu/README.md
new file mode 100644
index 0000000..6ead167
--- /dev/null
+++ b/infiniop/ops/gelu/README.md
@@ -0,0 +1,135 @@
+# GeLU 算子
+
+GeLU 算子用于执行高斯误差线性单元(Gaussian Error Linear Unit)激活函数。该算子参考 `torch.gelu` 的行为。
+
+## 数学定义
+
+给定输入张量 $x$,GeLU 算子的计算公式为:
+
+$$\text{GeLU}(x) = x \cdot \Phi(x) = x \cdot \frac{1}{2}\left[1 + \text{erf}\left(\frac{x}{\sqrt{2}}\right)\right]$$
+
+其中 $\Phi(x)$ 是标准正态分布的累积分布函数,$\text{erf}$ 是误差函数。
+
+近似计算公式为:
+
+$$\text{GeLU}(x) \approx 0.5 \cdot x \cdot \left(1 + \tanh\left(\sqrt{\frac{2}{\pi}} \cdot (x + 0.044715 \cdot x^3)\right)\right)$$
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopGelu(
+ infiniopGeluDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *output,
+ const void *input,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateGeluDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `output`:
+ 计算结果地址,支持原位计算。
+- `input`:
+ 输入张量数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateGeluDescriptor(
+ infiniopHandle_t handle,
+ infiniopGeluDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t output,
+ infiniopTensorDescriptor_t input
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopGeluDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `output` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 输出张量描述,支持原位计算。
+- `input` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 输入张量描述,支持原位计算。
+
+参数限制:
+
+- 输入和输出张量的数据类型必须相同,支持 `FP16`、`FP32`、`BF16`。
+- 输入和输出张量的形状必须相同。
+- 支持原位计算,即计算时 `output` 可以和 `input` 指向同一地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_BAD_TENSOR_STRIDES`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetGeluWorkspaceSize(
+ infiniopGeluDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateGeluDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyGeluDescriptor(
+ infiniopGeluDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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
+[`INFINI_STATUS_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/gelu_backward/README.md b/infiniop/ops/gelu_backward/README.md
new file mode 100644
index 0000000..2f584b6
--- /dev/null
+++ b/infiniop/ops/gelu_backward/README.md
@@ -0,0 +1,145 @@
+# GeLU Backward 算子
+
+GeLU Backward 算子用于计算 GeLU 激活函数的反向传播梯度。该算子参考 `torch.gelu` 的反向传播行为。
+
+## 数学定义
+
+给定输入张量 $x$ 和输出梯度 $\frac{\partial L}{\partial y}$,GeLU Backward 算子的计算公式为:
+
+$$\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \frac{\partial \text{GeLU}(x)}{\partial x}$$
+
+其中 GeLU 函数的导数为:
+
+$$\frac{\partial \text{GeLU}(x)}{\partial x} = \Phi(x) + x \cdot \phi(x)$$
+
+这里 $\Phi(x)$ 是标准正态分布的累积分布函数,$\phi(x) = \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}$ 是标准正态分布的概率密度函数。
+
+近似计算的导数公式为:
+
+$$\frac{\partial \text{GeLU}(x)}{\partial x} \approx 0.5 \cdot \tanh\left(\sqrt{\frac{2}{\pi}} \cdot (x + 0.044715 \cdot x^3)\right) + \frac{0.5 \cdot x \cdot \text{sech}^2\left(\sqrt{\frac{2}{\pi}} \cdot (x + 0.044715 \cdot x^3)\right) \cdot \sqrt{\frac{2}{\pi}} \cdot (1 + 0.134145 \cdot x^2)}{1}$$
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopGeluBackward(
+ infiniopGeluBackwardDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *grad_input,
+ const void *input,
+ const void *grad_output,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateGeluBackwardDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `grad_input`:
+ 输入梯度的计算结果地址,支持原位计算。
+- `input`:
+ 前向传播的输入张量数据指针。
+- `grad_output`:
+ 输出梯度张量数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateGeluBackwardDescriptor(
+ infiniopHandle_t handle,
+ infiniopGeluBackwardDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t grad_input,
+ infiniopTensorDescriptor_t input,
+ infiniopTensorDescriptor_t grad_output
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopGeluBackwardDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `grad_input` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 输入梯度张量描述,支持原位计算。
+- `input` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 前向传播输入张量描述。
+- `grad_output` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 输出梯度张量描述,支持原位计算。
+
+参数限制:
+
+- 所有张量的数据类型必须相同,支持 `FP16`、`FP32`、`BF16`。
+- 所有张量的形状必须相同。
+- 支持原位计算,即计算时 `grad_input` 可以和 `grad_output` 指向同一地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_BAD_TENSOR_STRIDES`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetGeluBackwardWorkspaceSize(
+ infiniopGeluBackwardDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateGeluBackwardDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyGeluBackwardDescriptor(
+ infiniopGeluBackwardDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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
+[`INFINI_STATUS_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/or/README.md b/infiniop/ops/or/README.md
new file mode 100644
index 0000000..ac56926
--- /dev/null
+++ b/infiniop/ops/or/README.md
@@ -0,0 +1,138 @@
+# Or 算子
+
+Or 算子用于执行张量的逐元素逻辑或运算。该算子参考 `torch.logical_or` 的行为。
+
+## 数学定义
+
+给定两个布尔张量 $a$ 和 $b$,Or 算子的计算公式为:
+
+$$c = \text{or}(a, b) = a \lor b$$
+
+其中 $c$ 是输出张量,$a$ 和 $b$ 是输入张量。该算子支持多向广播。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopOr(
+ infiniopOrDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateOrDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `c`:
+ 计算结果地址,支持原位计算。
+- `a`:
+ 输入张量 `a` 的数据指针。
+- `b`:
+ 输入张量 `b` 的数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateOrDescriptor(
+ infiniopHandle_t handle,
+ infiniopOrDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c,
+ infiniopTensorDescriptor_t a,
+ infiniopTensorDescriptor_t b
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopOrDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `c` - { BOOL | (d1,...,dn) | (...) }:
+ 算子计算参数 `c` 的张量描述,支持原位计算。
+- `a` - { BOOL | (d1,...,dn) | (...) }:
+ 算子计算参数 `a` 的张量描述,支持原位计算,支持多向广播。
+- `b` - { BOOL | (d1,...,dn) | (...) }:
+ 算子计算参数 `b` 的张量描述,支持原位计算,支持多向广播。
+
+参数限制:
+
+- 所有张量的数据类型必须为 `Bool`。
+- 输入 `a` 与 `b` 的形状需与 `c` 相同。`a` 与 `b` 涉及多向广播时需调整步长以匹配多向广播的映射关系。
+- 支持原位计算,即计算时 `c` 可以和 `a` 或 `b` 指向同一地址。
+- 计算输出参数 `c` 不能进行广播(`c` 的步长不能涉及广播设置,即步长不能有 0)。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_BAD_TENSOR_STRIDES`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetOrWorkspaceSize(
+ infiniopOrDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateOrDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyOrDescriptor(
+ infiniopOrDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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
+[`INFINI_STATUS_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/relu_backward/README.md b/infiniop/ops/relu_backward/README.md
new file mode 100644
index 0000000..ea51ca8
--- /dev/null
+++ b/infiniop/ops/relu_backward/README.md
@@ -0,0 +1,140 @@
+# ReLU Backward 算子
+
+ReLU Backward 算子用于计算 ReLU 激活函数的反向传播梯度。该算子参考 `torch.relu` 的反向传播行为。
+
+## 数学定义
+
+给定输入张量 $x$ 和输出梯度 $\frac{\partial L}{\partial y}$,ReLU Backward 算子的计算公式为:
+
+$$\frac{\partial L}{\partial x} = \begin{cases}
+\frac{\partial L}{\partial y} & \text{if } x > 0 \\
+0 & \text{if } x \leq 0
+\end{cases}$$
+
+其中 $\frac{\partial L}{\partial x}$ 是输入梯度,$x$ 是前向传播的输入张量,$\frac{\partial L}{\partial y}$ 是输出梯度。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopReluBackward(
+ infiniopReluBackwardDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *grad_input,
+ const void *input,
+ const void *grad_output,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateReluBackwardDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `grad_input`:
+ 输入梯度的计算结果地址,支持原位计算。
+- `input`:
+ 前向传播的输入张量数据指针。
+- `grad_output`:
+ 输出梯度张量数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateReluBackwardDescriptor(
+ infiniopHandle_t handle,
+ infiniopReluBackwardDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t grad_input,
+ infiniopTensorDescriptor_t input,
+ infiniopTensorDescriptor_t grad_output
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopReluBackwardDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `grad_input` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 输入梯度张量描述,支持原位计算。
+- `input` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 前向传播输入张量描述。
+- `grad_output` - { FP16 | FP32 | BF16 | (d1,...,dn) | (...) }:
+ 输出梯度张量描述,支持原位计算。
+
+参数限制:
+
+- 所有张量的数据类型必须相同,支持 `FP16`、`FP32`、`BF16`。
+- 所有张量的形状必须相同。
+- 支持原位计算,即计算时 `grad_input` 可以和 `grad_output` 指向同一地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_BAD_TENSOR_STRIDES`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetReluBackwardWorkspaceSize(
+ infiniopReluBackwardDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateReluBackwardDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyReluBackwardDescriptor(
+ infiniopReluBackwardDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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
+[`INFINI_STATUS_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file
diff --git a/infiniop/ops/silu/README.md b/infiniop/ops/silu/README.md
new file mode 100644
index 0000000..cf4c227
--- /dev/null
+++ b/infiniop/ops/silu/README.md
@@ -0,0 +1,130 @@
+# Silu 算子
+
+Silu(Sigmoid Linear Unit)算子是一种激活函数,也被称为 Swish 激活函数。该算子参考 `torch.silu` 的行为。
+
+## 数学定义
+
+给定输入张量 $x$,Silu 算子的计算公式为:
+
+$$\text{silu}(x) = x \cdot \sigma(x) = x \cdot \frac{1}{1 + e^{-x}}$$
+
+其中 $\sigma(x)$ 是 sigmoid 函数。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopSilu(
+ infiniopSiluDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *output,
+ const void *input,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateSiluDescriptor()` 初始化的算子描述符。
+- `workspace`:
+ 额外工作空间地址。
+- `workspace_size`:
+ `workspace` 的大小,单位:字节。
+- `output`:
+ 计算结果地址,当与 `input` 相同时为原地操作。
+- `input`:
+ 输入张量的数据指针。
+- `stream`:
+ 计算流/队列。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateSiluDescriptor(
+ infiniopHandle_t handle,
+ infiniopSiluDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t output,
+ infiniopTensorDescriptor_t input
+);
+```
+
+ 参数:
+
+- `handle`:
+ 硬件控柄。详见 [`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopSiluDescriptor_t` 指针,指向将被初始化的算子描述符地址。
+- `output` - { dT | (d1,...,dn) | (...) }:
+ 计算结果 `output` 的张量描述,支持原位计算。
+- `input` - { dT | (d1,...,dn) | (...) }:
+ 输入张量 `input` 的张量描述。
+
+参数限制:
+
+- `dT`: (`Float16`, `Float32`, `BFloat16`) 之一。
+- 输入和输出张量必须具有相同的形状和数据类型。
+- 支持原位计算,即计算时 `output` 可以和 `input` 指向同一地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_SHAPE`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 计算额外工作空间
+
+```c
+infiniStatus_t infiniopGetSiluWorkspaceSize(
+ infiniopSiluDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateSiluDescriptor()` 初始化的算子描述符。
+- `size`:
+ 额外空间大小的计算结果的写入地址。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroySiluDescriptor(
+ infiniopSiluDescriptor_t desc
+);
+```
+
+ 参数:
+
+- `desc`:
+ 待销毁的算子描述符。
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+## 已知问题
+
+无
+
+
+[`InfiniopHandle_t`]: /infiniop/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_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
+[`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_NULL_POINTER`]:/common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]:/common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
+[`INFINI_STATUS_INTERNAL_ERROR`]:/common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
\ No newline at end of file