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

data_move

功能说明

根据src与dst tensor的类型进行数据传输。支持:

  • UB->UB
  • UB->OUT
  • OUT->UB
  • OUT->L1

函数原型

data_move (dst, src, sid, nburst, burst, src_stride, dst_stride, *args, **argv)

参数说明

表1 参数说明

参数名称

输入/输出

含义

dst

输出

目的操作数,支持数据类型参考表2

若dst的scope为L1或UB, 则要求地址偏移32Byte对齐。

src

输入

源操作数,支持数据类型参考表2

若dst的scope为L1或UB, 则要求地址偏移32Byte对齐。

sid

输入

SMMU ID,为硬件保留接口,输入0即可,取值范围:sid∈[0, 15],支持数据类型:Scalar(int32)、立即数(int32)、Expr(int32)。

nburst

输入

传输数据片段数目,取值范围:nburst∈[1, 4095],支持的数据类型为:Scalar(int32)、立即数(int32)、Expr(int32)。

burst

输入

连续传输数据片段长度,取值范围:burst∈[1, 65535],单位:32B。

支持的数据类型为:Scalar(int16/int32/int64/uint16/uint32/uint64)、立即数(int)、Expr(int16/int32/int64/uint16/uint32/uint64)。

src_stride

输入

源tensor相邻连续数据片段间隔(前 burst 尾与后 burst 头),取值范围:src_stride∈[0, 65535]。支持的数据类型为:Scalar(int16/int32/int64/uint16/uint32/uint64)、立即数(int)、Expr(int16/int32/int64/uint16/uint32/uint64)。

dst_stride

输入

目的tensor相邻连续数据片段间隔(前 burst 尾与后 burst 头),取值范围:dst_stride∈[0, 65535]。支持的数据类型为:Scalar(int16/int32/int64/uint16/uint32/uint64)、立即数(int)、Expr(int16/int32/int64/uint16/uint32/uint64)。

*args

输入

扩展参数个数。

**argv

输入

扩展参数。

表2 data_move相关数据类型、scope及参数单位

src.scope

dst.scope

dtype

(src需与dst保持一致)

burst

单位

src_stride

单位

dst_stride

单位

OUT

L1

uint8, int8, float16, uint16, int16, float32, int32, uint32, uint64, int64

32B

32B

32B

OUT

UB

uint8, int8, float16, uint16, int16, float32, int32, uint32, uint64, int64

32B

32B

32B

UB

OUT

uint8, int8, float16, uint16, int16, float32, int32, uint32, uint64, int64

32B

32B

32B

UB

UB

uint8, int8, float16, uint16, int16, float32, int32, uint32, uint64, int64

32B

32B

32B

注意事项

返回值

调用示例

from te import tik
tik_instance = tik.Tik()
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)
tik_instance.data_move(dst_ub, src_ub, 0, 1, 128 // 16, 0, 0)
分享:

    相关文档

    相关产品

关闭导读