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)
参数说明
参数名称 |
输入/输出 |
含义 |
---|---|---|
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 |
输入 |
扩展参数。 |
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)
