LoadDist#
产品支持情况#
Ascend 950PR/Ascend 950DT:支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
功能说明#
LoadDist定义了vf.load_align的数据加载分布模式,用于控制从UB到寄存器的数据搬运方式。不同模式对应不同的硬件指令,影响数据在寄存器中的排布和广播/采样行为。
原型定义#
class LoadDist(enum.Enum):
# RegTensor目标
NORM = ... # 普通逐元素加载(默认)
BRC = ... # 广播单个元素到整个寄存器
BRC_B8 = ... # 按8位宽类型广播
BRC_B16 = ... # 按16位宽类型广播
BRC_B32 = ... # 按32位宽类型广播
US = ... # 上采样(每个元素重复两次)
US_B8 = ... # 按8位宽类型上采样
US_B16 = ... # 按16位宽类型上采样
DS = ... # 下采样(每隔一个元素丢弃)
DS_B8 = ... # 按8位宽类型下采样
DS_B16 = ... # 按16位宽类型下采样
UNPK = ... # 解包
UNPK_B8 = ... # 按8位宽类型解包
UNPK_B16 = ... # 按16位宽类型解包
UNPK_B32 = ... # 按32位宽类型解包
UNPK4 = ... # 4元素解包
BLK = ... # 块拷贝
E2B = ... # 16位宽类型->32位宽类型扩展
E2B_B16 = ... # 按16位宽类型扩展
E2B_B32 = ... # 按32位宽类型粒度扩展
DINTLV_B8 = ... # 按8位宽类型去交错(拆分奇偶寄存器)
DINTLV_B16 = ... # 按16位宽类型去交错
DINTLV_B32 = ... # 按32位宽类型去交错
# MaskReg目标
# NORM/US/DS 同RegTensor目标,搬运数据量为VL/8字节
调用示例#
import pypto_pro.language as pl
@pl.vector_function
def vf_kernel():
reg = vf.load_align(ub_tile, dist=pl.LoadDist.BRC)