更新时间:2021-03-18 GMT+08:00
分享

vec_rec

功能说明

按element取倒数:

使用该接口处理float16类型的数据时,计算精度不满足双千分之一;使用该接口处理float32类型的数据时,计算精度不满足双万分之一,如果对精度有更高要求,建议使用vec_rec_high_preci接口。

函数原型

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

参数说明

请参见参数说明

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

dst与src支持的数据类型为:Tensor(float16,float32)。

返回值

注意事项

  • 请参考注意事项
  • 如果src的数值为0,可能会产生未知结果。

调用示例1

from te import tik
# 定义容器
tik_instance = tik.Tik()
# 定义计算tensor
src_gm = tik_instance.Tensor("float32", (128,), name="src_gm", scope=tik.scope_gm)
dst_gm = tik_instance.Tensor("float32", (128,), name="dst_gm", scope=tik.scope_gm)
src_ub = tik_instance.Tensor("float32", (128,), name="src_ub", scope=tik.scope_ubuf)
dst_ub = tik_instance.Tensor("float32", (128,), name="dst_ub", scope=tik.scope_ubuf)
# 数据从gm搬运到ub
tik_instance.data_move(src_ub, src_gm, 0, 1, 128*4 // 32, 0, 0)
tik_instance.vec_rec(64, dst_ub, src_ub, 2, 8, 8)
# 数据从ub搬运到gm
tik_instance.data_move(dst_gm, dst_ub, 0, 1, 128*4 // 32, 0, 0)
tik_instance.BuildCCE(kernel_name="vec_rec", inputs=[src_gm], outputs=[dst_gm])

输入:
[1.2017815 -8.758528 -3.9551935 ... -1.3599057 -2.319316]
输出:
[0.83203125 -0.11401367 -0.2529297 ... -0.734375 -0.43164062]

调用示例2

from te import tik
# 定义容器
tik_instance = tik.Tik()
# 定义计算tensor
src_gm = tik_instance.Tensor("float16", (128,), name="src_gm", scope=tik.scope_gm)
dst_gm = tik_instance.Tensor("float16", (128,), name="dst_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)
# 数据从gm搬运到ub
tik_instance.data_move(src_ub, src_gm, 0, 1, 128*2 // 32, 0, 0)
tik_instance.vec_rec(128, dst_ub, src_ub, 1, 8, 8)
# 数据从ub搬运到gm
tik_instance.data_move(dst_gm, dst_ub, 0, 1, 128*2 // 32, 0, 0)
tik_instance.BuildCCE(kernel_name="vec_rec", inputs=[src_gm], outputs=[dst_gm])

输入:
[-7.152 -7.24 1.771 ... -1.339 4.473]
输出:
[-0.1396 -0.1382 0.5645 ... -0.748 0.2231]
分享:

    相关文档

    相关产品

close