aclnnAddLayerNorm
支持的产品型号
- Atlas 推理系列产品
- Atlas A2训练系列产品/Atlas 800I A2推理产品
接口原型
每个算子分为undefined,必须先调用aclnnAddLayerNormGetWorkspaceSize
接口获取入参并根据计算流程所需workspace大小,再调用aclnnAddLayerNorm
接口执行计算。
aclnnStatus aclnnAddLayerNormGetWorkspaceSize(const aclTensor *x1, const aclTensor *x2, const aclTensor *gamma, const aclTensor *beta, const aclTensor *bias, double epsilon, bool additionalOut, const aclTensor *yOut, const aclTensor *meanOut, const aclTensor *rstdOut, const aclTensor *xOut, uint64_t *workspaceSize, aclOpExecutor **executor)
aclnnStatus aclnnAddLayerNorm(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)
功能描述
- 算子功能:实现AddLayerNorm功能。
- 计算公式:
aclnnAddLayerNormGetWorkspaceSize
参数说明:
- x1(aclTensor *,计算输入):表示AddLayerNorm中加法计算的输入,将会在算子内做 x1 + x2 + bias 的计算并对计算结果做层归一化;是Device 侧的aclTensor,shape支持1-8维度,undefined支持ND。
- Atlas 推理系列产品:数据类型支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:数据类型支持FLOAT32、FLOAT16、BFLOAT16。
- x2(aclTensor *,计算输入):表示AddLayerNorm中加法计算的输入,将会在算子内做 x1 + x2 + bias 的计算并对计算结果做层归一化;是Device 侧的aclTensor,shape支持1-8维度,undefined支持ND。
- Atlas 推理系列产品:数据类型支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:数据类型支持FLOAT32、FLOAT16、BFLOAT16。
- beta(aclTensor *,计算输入):对应LayerNorm计算公式中的 beta ,表示层归一化中的 beta 参数;是Device 侧的aclTensor,shape支持 1 维度,undefined支持ND,数据维度和x1/x2的尾轴相同。
- Atlas 推理系列产品:数据类型支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:数据类型支持FLOAT32、FLOAT16、BFLOAT16。
- gamma(aclTensor *,计算输入):对应LayerNorm计算公式中的 gamma,表示层归一化中的 gamma 参数;是Device 侧的aclTensor,shape支持 1 维度,undefined支持ND,数据维度和x1/x2的尾轴相同。
- Atlas 推理系列产品:数据类型支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:数据类型支持FLOAT32、FLOAT16、BFLOAT16。
- bias(aclTensor *,计算输入):可选输入参数,表示AddLayerNorm中加法计算的输入,将会在算子内做 x1 + x2 + bias 的计算并对计算结果做层归一化;shape可以和gamma/beta或是和x1/x2一致,是Device 侧的aclTensor,shape支持1-8维度,undefined支持ND。
- Atlas 推理系列产品:数据类型支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:数据类型支持FLOAT32、FLOAT16、BFLOAT16。
- epsilon(double *,计算输入):表对应LayerNorm中的epsilon,添加到分母中的值,以确保数值稳定;host侧的aclScalar,数据类型为double,默认值为1e-5。
- additionalOut(bool *,计算输入):表示是否开启x=x1+x2的输出,host侧的aclScalar,数据类型为bool。
- meanOut(aclTensor *,计算输出):输出 LayerNorm 计算过程中 (x1 + x2) 的结果的均值,Device 侧的aclTensor,数据类型为FLOAT32,shape需要与输入x1/x2一致,最后一轴的size为1,undefined支持ND,该输出在Atlas 推理系列产品上无效。计算逻辑:
- rstdOut(aclTensor *,计算输出):输出 LayerNorm 计算过程中 rstd 的结果,Device 侧的aclTensor,数据类型为FLOAT32,shape需要与输入x1/x2一致,最后一轴的size为1,undefined支持ND,该输出在Atlas 推理系列产品上无效。计算逻辑:
- yOut(aclTensor *,计算输出):表示LayerNorm的结果输出y,Device 侧的aclTensor,shape需要与输入x1/x2一致,undefined支持ND。
- Atlas 推理系列产品:数据类型支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:数据类型支持FLOAT32、FLOAT16、BFLOAT16。
- xOut(aclTensor *,计算输出):表示LayerNorm的结果输出x,Device 侧的aclTensor,shape需要与输入x1/x2一致,undefined支持ND。
- Atlas 推理系列产品:数据类型支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:数据类型支持FLOAT32、FLOAT16、BFLOAT16。
- workspaceSize(uint64_t *,出参):返回需要在Device 侧申请的workspace大小。
- executor(aclOpExecutor **,出参):返回op执行器,包含了算子计算流程。
- x1(aclTensor *,计算输入):表示AddLayerNorm中加法计算的输入,将会在算子内做 x1 + x2 + bias 的计算并对计算结果做层归一化;是Device 侧的aclTensor,shape支持1-8维度,undefined支持ND。
返回值:
aclnnStatus:返回状态码。(参见undefined)
[object Object]
aclnnAddLayerNorm
参数说明:
- workspace(void *,入参):在Device侧申请的workspace内存地址。
- workspaceSize(uint64_t,入参):在Device侧申请的workspace大小,由第一段接口aclnnAddLayerNormGetWorkspaceSize获取。
- executor(aclOpExecutor *,入参):op执行器,包含了算子计算流程。
- stream(aclrtStream,入参):指定执行任务的AscendCL stream流。
返回值:
aclnnStatus:返回状态码。(具体参见undefined)
约束与限制
- 功能维度
- 数据类型支持
- Atlas 推理系列产品:x1、x2、beta、gamma、bias支持FLOAT32、FLOAT16。
- Atlas A2训练系列产品/Atlas 800I A2推理产品:x1、x2、beta、gamma、bias支持FLOAT32、FLOAT16、BFLOAT16。
- rstd、mean支持:FLOAT32。
- 数据格式支持:ND。
- Atlas 推理系列产品上,x1、x2、beta、gamma、bias五个输入的尾轴长度必须大于等于 32 Bytes。
- 数据类型支持
- 未支持类型说明
- DOUBLE:指令不支持DOUBLE。
- 是否支持空tensor:不支持空进空出。
- 是否非连续tensor:不支持输入非连续,不支持数据非连续。
- 边界值场景说明
- 当输入是inf时,输出为inf。
- 当输入是nan时,输出为nan。
- 各平台支持数据类型说明
- Atlas A2训练系列产品/Atlas 800I A2推理产品
x1 数据类型 x2 数据类型 gamma 数据类型 beta 数据类型 bias 数据类型 y 数据类型 mean 数据类型 rstd 数据类型 x 数据类型 float32 float16 float32 float32 float32 float32 float32 float32 float32 float32 bfloat16 float32 float32 float32 float32 float32 float32 float32 float16 float32 float32 float32 float32 float32 float32 float32 float32 bfloat16 float32 float32 float32 float32 float32 float32 float32 float32 float16 float16 float32 float32 float16 float16 float32 float32 float16 bfloat16 bfloat16 float32 float32 bfloat16 bfloat16 float32 float32 bfloat16 float16 float16 float16 float16 float16 float16 float32 float32 float16 bfloat16 bfloat16 bfloat16 bfloat16 bfloat16 bfloat16 float32 float32 bfloat16 float32 float32 float32 float32 float32 float32 float32 float32 float32 - Atlas 推理系列产品
x1 数据类型 x2 数据类型 gamma 数据类型 beta 数据类型 bias 数据类型 y 数据类型 mean 数据类型 rstd 数据类型 x 数据类型 float32 float32 float32 float32 float32 float32 float32 float32 float32 float16 float16 float16 float16 float16 float16 float32 float32 float16
- Atlas A2训练系列产品/Atlas 800I A2推理产品
调用示例
示例代码如下,仅供参考,具体编译和执行过程请参考undefined。
[object Object]