文档
注册
评分
提单
论坛
小AI

vec_rsqrt

功能说明

按element做开方后,再取倒数:

函数原型

vec_rsqrt(mask, dst, src, repeat_times, dst_rep_stride, src_rep_stride)

参数说明

请参见参数说明

dst与src的数据类型需要保持一致。

Atlas 200/300/500 推理产品,dst/src支持的数据类型为:Tensor(float16/float32)

Atlas 训练系列产品,dst/src支持的数据类型为:Tensor(float16/float32)

Atlas推理系列产品(Ascend 310P处理器)AI Core,dst/src支持的数据类型为:Tensor(float16/float32)

Atlas推理系列产品(Ascend 310P处理器)Vector Core,dst/src支持的数据类型为:Tensor(float16/float32)

Atlas A2训练系列产品/Atlas 800I A2推理产品,dst与src支持的数据类型为:Tensor (float16/float32)

Atlas 200/500 A2推理产品,dst与src支持的数据类型为:Tensor (float16/float32)

返回值

支持的型号

Atlas 200/300/500 推理产品

Atlas 训练系列产品

Atlas推理系列产品(Ascend 310P处理器)AI Core

Atlas推理系列产品(Ascend 310P处理器)Vector Core

Atlas A2训练系列产品/Atlas 800I A2推理产品

Atlas 200/500 A2推理产品

注意事项

  • 如果src的数值为非正数,可能会产生未知结果。
  • 对于Atlas 200/300/500 推理产品,使用该接口处理float16类型的数据时,计算精度不满足双千分之一;使用该接口处理float32类型的数据时,计算精度不满足双万分之一,如果对精度有更高要求,建议使用vec_rsqrt_high_preci接口。
  • 对于Atlas 训练系列产品,使用该接口处理float16类型的数据时,计算精度不满足双千分之一;使用该接口处理float32类型的数据时,计算精度不满足双万分之一,如果对精度有更高要求,建议使用vec_rsqrt_high_preci接口。
  • 对于Atlas推理系列产品(Ascend 310P处理器)AI Core,使用该接口处理float16类型的数据时,计算精度不满足双千分之一;使用该接口处理float32类型的数据时,计算精度不满足双万分之一,如果对精度有更高要求,建议使用vec_rsqrt_high_preci接口。
  • 对于Atlas推理系列产品(Ascend 310P处理器)Vector Core,使用该接口处理float16类型的数据时,计算精度不满足双千分之一;使用该接口处理float32类型的数据时,计算精度不满足双万分之一,如果对精度有更高要求,建议使用vec_rsqrt_high_preci接口。
  • Atlas A2训练系列产品/Atlas 800I A2推理产品,使用该接口处理float16类型的数据时,计算精度不满足双千分之一;使用该接口处理float32类型的数据时,计算精度不满足双万分之一,如果对精度有更高要求,建议使用vec_rsqrt_high_preci接口。
  • Atlas 200/500 A2推理产品,使用该接口处理float16类型的数据时,计算精度不满足双千分之一;使用该接口处理float32类型的数据时,计算精度不满足双万分之一,如果对精度有更高要求,建议使用vec_rsqrt_high_preci接口。
  • 其他注意事项请参考注意事项

调用示例

此样例是针对数据量较小、一次搬运就可以完成的场景,目的是让大家了解接口的功能,更复杂的数据量较大的样例可参见调用示例

from tbe import tik
tik_instance = tik.Tik()
# 申请tensor
src_gm = tik_instance.Tensor("float16", (128,), name="src_gm", scope=tik.scope_gm)
src_ub = tik_instance.Tensor("float16", (128,), name="src_ub", scope=tik.scope_ubuf)
dst_ub = tik_instance.Tensor("float16", (128,), name="dst_ub", scope=tik.scope_ubuf)
dst_gm = tik_instance.Tensor("float16", (128,), name="dst_gm", scope=tik.scope_gm)
# 将用户数据从gm搬运到ub
tik_instance.data_move(src_ub, src_gm, 0, 1, 8, 0, 0)
tik_instance.vec_rsqrt(128, dst_ub, src_ub, 1, 8, 8)
# 将计算结果从ub搬运到目标gm
tik_instance.data_move(dst_gm, dst_ub, 0, 1, 8, 0, 0)
tik_instance.BuildCCE("test_vec_rsqrt", [src_gm], [dst_gm])

结果示例:

输入数据:
[1, 2, 3, 4, ......, 128]

输出数据:
[0.998, 0.705, 0.576, 0.499, ......, 0.08813]
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词