mask_reg#
产品支持情况#
Ascend 950PR&950DT系列产品:支持
Atlas A3系列产品:不支持
Atlas A2系列产品:不支持
功能说明#
掩码寄存器(mask_reg),VF计算的元素级有效性控制容器。用于控制VF算子中哪些元素参与运算。
mask_reg总位宽固定为256 bit,其粒度由关联的dtype参数决定。VF算子执行时,根据mask_reg中每个数据元素对应的比特位决定该元素是否参与运算:
比特位为1(有效):该元素参与运算,结果写入目的寄存器对应位置。
比特位为0(无效):该元素不参与运算,目的寄存器对应位置置零(vf.full等少数算子支持通过mode参数选择保留原值)。
原型定义#
mask_reg(dtype: DType) -> mask_reg
参数说明#
参数 |
输入/输出 |
说明 |
|---|---|---|
dtype |
输入 |
掩码粒度对应的数据类型,决定每多少bit对应一个数据元素。mask_reg总位宽固定为256 bit。 |
约束说明#
数据类型约束:
dtype
元素位宽
元素个数
每元素掩码位数
总掩码位数
DT_INT8 / DT_UINT8 / DT_FP8E4M3FN / DT_FP8E5M2 / DT_FP8E8M0 / DT_HF8 / DT_FP4E2M1 / DT_FP4E1M2
8 bit
256
1 bit(b8粒度)
256 bit
DT_FP16 / DT_UINT16 / DT_BF16
16 bit
128
2 bit(b16粒度)
256 bit
DT_FP32 / DT_INT32 / DT_UINT32
32 bit
64
4 bit(b32粒度)
256 bit
DT_INT64 / DT_UINT64
64 bit
32
8 bit(b64粒度)
256 bit
vf.mask_reg不能直接调用,由编译器在赋值形式中自动声明(如preg = vf.create_mask(…)或preg = vf.eq(…))。
返回值说明#
返回mask_reg类型。
调用示例#
import pypto_pro.language as pl
@pl.vector_function
def vf_kernel():
preg = vf.create_mask(pattern=pl.MaskPattern.ALL, dtype=pl.DT_FP32)
reg = vf.load_align(src_tile, 0)
reg_out = vf.add(reg, reg, preg)