From 62d2a9cf33c55f025eb29313861bbbd1a5c7adc1 Mon Sep 17 00:00:00 2001
From: pengcheng888 <1033693766@qq.com>
Date: Tue, 1 Jul 2025 20:05:36 +0800
Subject: [PATCH] issue/207 - Doc - Added the documentation for the sigmoid
operator.
---
infiniop/ops/sigmoid/README.md | 134 +++++++++++++++++++++++++++++++++
1 file changed, 134 insertions(+)
create mode 100644 infiniop/ops/sigmoid/README.md
diff --git a/infiniop/ops/sigmoid/README.md b/infiniop/ops/sigmoid/README.md
new file mode 100644
index 0000000..3e3e336
--- /dev/null
+++ b/infiniop/ops/sigmoid/README.md
@@ -0,0 +1,134 @@
+
+# `Sigmoid`
+
+`Sigmoid`, 是一种常用的激活函数算子。其计算可被表述为:
+
+
+$$
+Sigmoid(x_{i}) = \frac {1}{1 + e^{-x_{i}}}
+$$
+
+其中:
+
+- $x_{i}$: 输入张量第 `i` 个元素。
+
+## 接口
+
+### 计算
+
+```c
+infiniStatus_t infiniopSigmoid(
+ infiniopSigmoidDescriptor_t desc,
+ void *workspace,
+ size_t workspace_size,
+ void *y,
+ const void *x,
+ void *stream
+);
+```
+
+
参数:
+
+- `desc`:
+ 已使用 `infiniopCreateSigmoidDescriptor()` 初始化的算子描述符;
+- `workspace`:
+ 指向算子计算所需的额外工作空间;
+- `workspace_size`:
+ `workspace` 的大小,单位:字节;
+- `y`:
+ 输出张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `x`:
+ 输入张量。张量限制见[创建算子描述](#创建算子描述)部分;
+- `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 infiniopCreateSigmoidDescriptor(
+ infiniopHandle_t handle,
+ infiniopSigmoidDescriptor_t *desc_ptr,
+ infiniopTensorDescriptor_t y,
+ infiniopTensorDescriptor_t x
+);
+```
+
+ 参数:
+
+- `handle`:
+ `infiniopHandle_t` 类型的硬件控柄。详情请看:[`InfiniopHandle_t`]。
+- `desc_ptr`:
+ `infiniopSigmoidDescriptor_t` 指针,指向将被初始化的算子描述符地址;
+- `y` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `y` 的张量描述,支持原位计算。
+- `x` - { dT | (d1,...,dn) | (...) }:
+ 算子计算参数 `x` 的张量描述,支持原位计算。
+
+
+参数限制:
+- `dT`: (`Float16`, `Float32`, `Float64`) 之一。
+- 输入 `x` 的形状需与 `y` 相同。
+- 支持原位计算,即计算时 `y` 可以和 `x`指向同一地址。
+- 计算输出参数 `y` 不能进行广播(`y` 的步长不能涉及广播设置,即步长不能有 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 infiniopGetSigmoidWorkspaceSize(
+ infiniopSigmoidDescriptor_t desc,
+ size_t *size
+);
+```
+
+ 参数:
+
+- `desc`:
+ 已使用 `infiniopCreateSigmoidDescriptor()` 初始化的算子描述符;
+- `size`:
+ 额外空间大小的计算结果的写入地址;
+
+ 返回值:
+
+- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_NULL_POINTER`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
+
+### 销毁算子描述符
+
+```c
+infiniStatus_t infiniopDestroySigmoidDescriptor(
+ infiniopSigmoidDescriptor_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