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