diff --git a/infiniop/ops/README.md b/infiniop/ops/README.md
index 0633ec6..35e4690 100644
--- a/infiniop/ops/README.md
+++ b/infiniop/ops/README.md
@@ -3,12 +3,21 @@
- [`Add`](/infiniop/ops/add/README.md)
- [`Causal Softmax`](/infiniop/ops/causal_softmax/README.md)
- [`Clip`](/infiniop/ops/clip/README.md)
+- [`CrossEntropyLoss Backward`](/infiniop/ops/crossentropyloss_backward/README.md)
+- [`Div`](/infiniop/ops/div/README.md)
+- [`GELU`](/infiniop/ops/gelu/README.md)
+- [`GELU Backward`](/infiniop/ops/gelu_backward/README.md)
- [`GEMM`](/infiniop/ops/gemm/README.md)
+- [`Logical And`](/infiniop/ops/logical_and/README.md)
+- [`Logical Equal`](/infiniop/ops/logical_equal/README.md)
+- [`Logical Or`](/infiniop/ops/logical_or/README.md)
- [`Mul`](/infiniop/ops/mul/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/crossentropyloss_backward/README.md b/infiniop/ops/crossentropyloss_backward/README.md
new file mode 100644
index 0000000..57c4c8e
--- /dev/null
+++ b/infiniop/ops/crossentropyloss_backward/README.md
@@ -0,0 +1,139 @@
+# `CrossEntropyLoss Backward`
+
+`CrossEntropyLoss Backward`,即 **交叉熵损失函数反向传播**算子,计算交叉熵损失函数的梯度。
+计算为:
+$$grad\_logits = (probs - target) / N$$
+其中probs为概率,target为形状与logits相同的one-hot张量
+## 接口
+
+### 计算
+
+```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_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateCrossEntropyLossBackwardDescriptor(
+ infiniopHandle_t handle,
+ infiniopCrossEntropyLossBackwardDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t grad_logits_desc,
+ infiniopTensorDescriptor_t probs_desc,
+ infiniopTensorDescriptor_t target_desc,
+ int64_t reduction,
+ int64_t ignore_index
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopCrossEntropyLossBackwardDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `grad_logits_desc` - { dT | (N, C) | (...) }:
+ 算子计算参数 `grad_logits` 的张量描述。
+- `probs_desc` - { dT | (N, C) | (...) }:
+ 算子计算参数 `probs` 的张量描述。
+- `target_desc` - { iT | (N,) | (...) }:
+ 算子计算参数 `target` 的张量描述。
+- `reduction`:
+ 损失缩减方式。0: 无缩减,1: 求平均,2: 求和。
+- `ignore_index`:
+ 忽略的目标索引值,通常用于忽略填充标记。
+
+参数限制:
+
+- `dT`: (`Float16`, `Float32`, `Float64`, `BFloat16`) 之一。
+- `iT`: (`Int32`, `Int64`) 之一。
+- `probs` 张量形状为 (N, C),其中 N 为批次大小,C 为类别数。
+- `target` 张量形状为 (N,),包含类别索引。
+- `grad_logits` 张量形状为 (N, C),与 `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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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
diff --git a/infiniop/ops/div/README.md b/infiniop/ops/div/README.md
new file mode 100644
index 0000000..326c14a
--- /dev/null
+++ b/infiniop/ops/div/README.md
@@ -0,0 +1,144 @@
+# `Div`
+
+`Div`, 即**除法**算子,为双目逐元素算子。其计算可被表述为:
+
+$$ c = \frac{a}{b} $$
+
+其中 `a` 和 `b` 为输入,`c` 为输出。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopDiv(
+ infiniopDivDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ const void *mode,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateDivDescriptor()` 初始化的算子描述符;
+- `workspace`:
+ 指向算子计算所需的额外工作空间;
+- `workspace_size`:
+ `workspace` 的大小,单位:字节;
+- `c`:
+ 输出张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `a`:
+ 输入张量(被除数)。张量限制见[创建算子描述](#创建算子描述)部分;
+- `b`:
+ 输入张量(除数)。张量限制见[创建算子描述](#创建算子描述)部分;
+- 'mode':
+ 除法模式,0为默认除法,1为trunc截断除法,2为floor向下取整,
+ 在python层以如下代码封装
+```
+ class InfiniDivMode(IntEnum):
+ DEFAULT = 0
+ TRUNC = 1
+ FLOOR = 2
+```
+- `stream`:
+ 计算流/队列;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateDivDescriptor(
+ infiniopHandle_t handle,
+ infiniopDivDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c_desc,
+ infiniopTensorDescriptor_t a_desc,
+ infiniopTensorDescriptor_t b_desc
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopDivDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `c_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `c` 的张量描述,支持原位计算。
+- `a_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `a` 的张量描述,支持原位计算,支持多向广播。
+- `b_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `b` 的张量描述,支持原位计算,支持多向广播。
+
+参数限制:
+
+- `dT`: (`Float16`, `Float32`, `Float64`, `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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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
diff --git a/infiniop/ops/gelu/README.md b/infiniop/ops/gelu/README.md
new file mode 100644
index 0000000..9e64501
--- /dev/null
+++ b/infiniop/ops/gelu/README.md
@@ -0,0 +1,134 @@
+# `GELU`
+
+`GELU` (Gaussian Error Linear Unit),即 **GELU 激活函数**算子,为单目逐元素算子。其计算可被表述为:
+
+$$ y = x \cdot \Phi(x) = x \cdot \frac{1}{2}(1 + \text{erf}(\frac{x}{\sqrt{2}})) $$
+
+或者近似计算:
+
+$$ y = x \cdot \sigma(1.702 \cdot x) $$
+
+其中 `x` 为输入,`y` 为输出,$\Phi(x)$ 为标准正态分布的累积分布函数。我们的实现为近似计算
+
+## 接口
+
+### 计算
+
+```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_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateGeluDescriptor(
+ infiniopHandle_t handle,
+ infiniopGeluDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t output_desc,
+ infiniopTensorDescriptor_t input_desc,
+ bool approximate
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopGeluDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `output_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `output` 的张量描述,支持原位计算。
+- `input_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `input` 的张量描述,支持原位计算。
+- `approximate`:
+ 是否使用近似计算。`true` 表示使用 tanh 近似,`false` 表示使用精确的 erf 计算。
+
+参数限制:
+
+- `dT`: (`Float16`, `Float32`, `Float64`, `BFloat16`) 之一。
+- 输入 `input` 与输出 `output` 的形状需相同。
+- 支持原位计算,即计算时 `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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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
diff --git a/infiniop/ops/gelu_backward/README.md b/infiniop/ops/gelu_backward/README.md
new file mode 100644
index 0000000..ce806a5
--- /dev/null
+++ b/infiniop/ops/gelu_backward/README.md
@@ -0,0 +1,143 @@
+# `GELU Backward`
+
+`GELU Backward`,即 **GELU 激活函数反向传播**算子,计算 GELU 函数的梯度。其计算可被表述为:
+
+$$ \frac{\partial}{\partial x} \text{GELU}(x) = \Phi(x) + x \cdot \phi(x) $$
+
+其中 $\Phi(x)$ 为标准正态分布的累积分布函数,$\phi(x)$ 为标准正态分布的概率密度函数。
+采取近似计算
+
+$$ \text{GELU}(x) = 0.5 \times x \times (1 + \text{Tanh}(\sqrt{\frac{2}{\pi}} \times (x + 0.044715 \times x^3))) $$
+令
+$$inner(x) =\sqrt{\frac{2}{\pi}} \times (x + 0.044715 \times x^3) $$
+那么
+$$ \frac{\partial}{\partial x} \text{GELU}(x)= 0.5 \times [ (1 + \text{Tanh}(inner)) + x \times ( 1- \text{Tanh}^2(inner)\times \frac{\partial }{\partial x}inner) ]$$
+
+## 接口
+
+### 计算
+
+```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_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateGeluBackwardDescriptor(
+ infiniopHandle_t handle,
+ infiniopGeluBackwardDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t grad_input_desc,
+ infiniopTensorDescriptor_t input_desc,
+ infiniopTensorDescriptor_t grad_output_desc,
+ bool approximate
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopGeluBackwardDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `grad_input_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `grad_input` 的张量描述,支持原位计算。
+- `input_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `input` 的张量描述。
+- `grad_output_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `grad_output` 的张量描述,支持原位计算。
+- `approximate`:
+ 是否使用近似计算。`true` 表示使用 tanh 近似,`false` 表示使用精确的 erf 计算。
+
+参数限制:
+
+- `dT`: (`Float16`, `Float32`, `Float64`, `BFloat16`) 之一。
+- 所有张量的形状需相同。
+- 支持原位计算,即计算时 `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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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
diff --git a/infiniop/ops/logical_and/README.md b/infiniop/ops/logical_and/README.md
new file mode 100644
index 0000000..b157c9f
--- /dev/null
+++ b/infiniop/ops/logical_and/README.md
@@ -0,0 +1,134 @@
+# `Logical And`
+
+`Logical And`, 即**逻辑与**算子,为双目逐元素算子。其计算可被表述为:
+
+$$ c = a \land b $$
+
+其中 `a` 和 `b` 为输入,`c` 为输出。对于非零元素视为 `true`,零元素视为 `false`。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopLogicalAnd(
+ infiniopLogicalAndDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateLogicalAndDescriptor()` 初始化的算子描述符;
+- `workspace`:
+ 指向算子计算所需的额外工作空间;
+- `workspace_size`:
+ `workspace` 的大小,单位:字节;
+- `c`:
+ 输出张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `a`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `b`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `stream`:
+ 计算流/队列;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateLogicalAndDescriptor(
+ infiniopHandle_t handle,
+ infiniopLogicalAndDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c_desc,
+ infiniopTensorDescriptor_t a_desc,
+ infiniopTensorDescriptor_t b_desc
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopLogicalAndDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `c_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `c` 的张量描述,支持原位计算。
+- `a_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `a` 的张量描述,支持原位计算,支持多向广播。
+- `b_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `b` 的张量描述,支持原位计算,支持多向广播。
+
+参数限制:
+
+- `dT`: (`Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `Float16`, `Float32`, `Float64`, `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 infiniopGetLogicalAndWorkspaceSize(
+ infiniopLogicalAndDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateLogicalAndDescriptor()` 初始化的算子描述符;
+- `size`:
+ 额外空间大小的计算结果的写入地址;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyLogicalAndDescriptor(
+ infiniopLogicalAndDescriptor_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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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
diff --git a/infiniop/ops/logical_equal/README.md b/infiniop/ops/logical_equal/README.md
new file mode 100644
index 0000000..e690d8d
--- /dev/null
+++ b/infiniop/ops/logical_equal/README.md
@@ -0,0 +1,134 @@
+# `Logical Equal`
+
+`Logical Equal`, 即**逻辑相等**算子,为双目逐元素算子。其计算可被表述为:
+
+$$ c = (a == b) $$
+
+其中 `a` 和 `b` 为输入,`c` 为输出。对于相等的元素输出 `true`(1),不相等的元素输出 `false`(0)。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopLogicalEqual(
+ infiniopLogicalEqualDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateLogicalEqualDescriptor()` 初始化的算子描述符;
+- `workspace`:
+ 指向算子计算所需的额外工作空间;
+- `workspace_size`:
+ `workspace` 的大小,单位:字节;
+- `c`:
+ 输出张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `a`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `b`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `stream`:
+ 计算流/队列;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateLogicalEqualDescriptor(
+ infiniopHandle_t handle,
+ infiniopLogicalEqualDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c_desc,
+ infiniopTensorDescriptor_t a_desc,
+ infiniopTensorDescriptor_t b_desc
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopLogicalEqualDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `c_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `c` 的张量描述,支持原位计算。
+- `a_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `a` 的张量描述,支持原位计算,支持多向广播。
+- `b_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `b` 的张量描述,支持原位计算,支持多向广播。
+
+参数限制:
+
+- `dT`: (`Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `Float16`, `Float32`, `Float64`, `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 infiniopGetLogicalEqualWorkspaceSize(
+ infiniopLogicalEqualDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateLogicalEqualDescriptor()` 初始化的算子描述符;
+- `size`:
+ 额外空间大小的计算结果的写入地址;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyLogicalEqualDescriptor(
+ infiniopLogicalEqualDescriptor_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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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
diff --git a/infiniop/ops/logical_or/README.md b/infiniop/ops/logical_or/README.md
new file mode 100644
index 0000000..44a8166
--- /dev/null
+++ b/infiniop/ops/logical_or/README.md
@@ -0,0 +1,134 @@
+# `Logical Or`
+
+`Logical Or`, 即**逻辑或**算子,为双目逐元素算子。其计算可被表述为:
+
+$$ c = a \lor b $$
+
+其中 `a` 和 `b` 为输入,`c` 为输出。对于非零元素视为 `true`,零元素视为 `false`。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopLogicalOr(
+ infiniopLogicalOrDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *c,
+ const void *a,
+ const void *b,
+ void *stream
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateLogicalOrDescriptor()` 初始化的算子描述符;
+- `workspace`:
+ 指向算子计算所需的额外工作空间;
+- `workspace_size`:
+ `workspace` 的大小,单位:字节;
+- `c`:
+ 输出张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `a`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `b`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `stream`:
+ 计算流/队列;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateLogicalOrDescriptor(
+ infiniopHandle_t handle,
+ infiniopLogicalOrDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t c_desc,
+ infiniopTensorDescriptor_t a_desc,
+ infiniopTensorDescriptor_t b_desc
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopLogicalOrDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `c_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `c` 的张量描述,支持原位计算。
+- `a_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `a` 的张量描述,支持原位计算,支持多向广播。
+- `b_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `b` 的张量描述,支持原位计算,支持多向广播。
+
+参数限制:
+
+- `dT`: (`Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `Float16`, `Float32`, `Float64`, `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 infiniopGetLogicalOrWorkspaceSize(
+ infiniopLogicalOrDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateLogicalOrDescriptor()` 初始化的算子描述符;
+- `size`:
+ 额外空间大小的计算结果的写入地址;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroyLogicalOrDescriptor(
+ infiniopLogicalOrDescriptor_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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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
diff --git a/infiniop/ops/relu_backward/README.md b/infiniop/ops/relu_backward/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/infiniop/ops/silu/README.md b/infiniop/ops/silu/README.md
new file mode 100644
index 0000000..d7b6d54
--- /dev/null
+++ b/infiniop/ops/silu/README.md
@@ -0,0 +1,127 @@
+# `SiLU`
+
+`SiLU` (Sigmoid Linear Unit),即 **Swish 激活函数**算子,为单目逐元素算子。其计算可被表述为:
+
+$$ y = x \cdot \sigma(x) = x \cdot \frac{1}{1 + e^{-x}} $$
+
+其中 `x` 为输入,`y` 为输出,$\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`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `stream`:
+ 计算流/队列;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_INSUFFICIENT_WORKSPACE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`], [`INFINI_STATUS_INTERNAL_ERROR`],[`INFINI_STATUS_BAD_TENSOR_DTYPE`].
+
+### 创建算子描述
+
+```c
+infiniStatus_t infiniopCreateSiluDescriptor(
+ infiniopHandle_t handle,
+ infiniopSiluDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t output_desc,
+ infiniopTensorDescriptor_t input_desc
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopSiluDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `output_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `output` 的张量描述,支持原位计算。
+- `input_desc` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `input` 的张量描述,支持原位计算。
+
+参数限制:
+
+- `dT`: (`Float16`, `Float32`, `Float64`, `BFloat16`) 之一。
+- 输入 `input` 与输出 `output` 的形状需相同。
+- 支持原位计算,即计算时 `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 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_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_NULL_POINTER`]: /common/status/README.md#INFINI_STATUS_NULL_POINTER
+[`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