按element取倒数:。
vec_rec(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 200/300/500 推理产品
Atlas 训练系列产品
from tbe 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]
from tbe 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]