Silu
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
√ |
√ |
|
√ |
|
x |
|
√ |
|
x |
|
x |
功能说明
按元素做Silu运算,计算公式如下:


函数原型
1 2 | template <typename T, bool isReuseSource = false> __aicore__ inline void Silu(const LocalTensor<T>& dstLocal, const LocalTensor<T>& srcLocal, uint32_t dataSize) |
参数说明
参数名 |
描述 |
|---|---|
T |
操作数的数据类型。 Atlas 350 加速卡,支持的数据类型为:half、float。 |
isReuseSource |
是否允许修改源操作数。该参数预留,传入默认值false即可。 |
参数名 |
输入/输出 |
描述 |
|---|---|---|
dstLocal |
输出 |
目的操作数。 类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。 |
srcLocal |
输入 |
源操作数。 类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。 源操作数的数据类型需要与目的操作数保持一致。 |
dataSize |
输入 |
实际计算数据元素个数。 |
返回值说明
无
约束说明
- 操作数地址偏移对齐要求请参见通用说明和约束。
- 不支持源操作数与目的操作数地址重叠。
- 当前仅支持ND格式的输入,不支持其他格式。
调用示例
1 2 3 4 5 | // dstLocal: 存放Silu计算结果的Tensor // srcLocal: 存放Silu计算输入的Tensor // 需要参与计算的元素个数为512 AscendC::Silu(dstLocal, srcLocal, 512); |
结果示例如下:
1 2 3 4 5 6 7 8 9 10 | 输入数据(srcLocal): [-100. -50. -20. -10. -5. -4. -3. -2. -1. -0.5 -0.4 -0.3 -0.2 -0.1 -0.01 0. 0. 0.01 0.1 0.2 0.3 0.4 0.5 1. 2. 3. 4. 5. 10. 20. 50. 100. ] 输出数据(dstLocal): [ -0. -0. -0.00000004 -0.00045398 -0.03346425 -0.07194484 -0.14227761 -0.23840587 -0.2689414 -0.18877034 -0.16052495 -0.12766725 -0.0900332 -0.04750208 -0.004975 0. 0. 0.005025 0.05249792 0.10996681 0.17233276 0.23947507 0.31122968 0.7310586 1.761594 2.8577225 3.928055 4.9665356 9.999546 20. 50. 100. ] |
父主题: Silu接口