功能说明
此为有两个源操作数时指令的通用格式,两个源操作数为src和标量scalar。
注意,此章节仅为通用格式说明,不是真正的指令。
函数原型
instruction (mask, dst, src, scalar, repeat_times, dst_rep_stride, src_rep_stride, mask_mode="normal")
参数说明
表1 参数说明
参数名称 |
输入/输出 |
含义 |
instruction |
输入 |
指令名称,TIK DSL中为全小写字符串。 |
mask |
输入 |
根据mask_mode,分为两种模式:
- normal mode:element操作有效指示,共128bits,每一个bit位用来表示vector的每个元素是否参与操作,bit位的值为1表示参与计算,0表示不参与计算。
支持的模式分为连续、逐bits两种。
- 逐bits模式:传入长度为2的scalar list或立即数list[mask_h, mask_l],list中每个元素支持数据类型:Scalar(int64)、立即数(int64)。逐bits表示 vector的每个元素是否参与操作,bit位的值为 1 表示参与计算,0表示不参与。mask_h对应高64个元素操作,mask_l对应低64个元素操作。如 mask=[0,8],8=0b1000,表示仅第4个element参与计算。
取值范围:当dst/src为16位时,mask_h/mask_l∈[0, 2**64-1];当dst/src为32位时,mask_h为0,mask_l∈[0, 2**64-1];当dst/src为64位时,mask_h为0,mask_l∈[0, 2**32-1]。
- counter_mode:支持传输数据类型Scalar(int64, int32, int16), 立即数(int),表示指令中实际操作的有效源操作数元素数量。在该模式下,指令的迭代次数由源操作矢量与mask值共同决定,入参repeat_times无效,取值范围[1, 2**32 – 1]。
Atlas 200/300/500 推理产品,按照normal mode处理。 Atlas 训练系列产品,按照normal mode处理。 |
dst |
输出 |
矢量目的操作数,tensor起始element,支持数据精度见具体指令。 Tensor的scope为Unified Buffer。 |
src |
输入 |
矢量源操作数,tensor起始element,支持数据精度见具体指令。 Tensor的scope为Unified Buffer。 |
scalar |
输入 |
标量源操作数,支持Scalar/立即数。 |
repeat_times |
输入 |
重复迭代次数。 |
dst_rep_stride |
输入 |
相邻迭代间,矢量目的操作数相同block地址步长。 |
src_rep_stride |
输入 |
相邻迭代间,矢量源操作数相同block地址步长。 |
mask_mode |
输入 |
mask模式选择参数,支持的数据类型:string,取值:
- normal:mask为normal mode
- counter:mask为counter mode
Atlas 200/300/500 推理产品,该参数不生效。 Atlas 训练系列产品,该参数不生效。 |
注意事项
- repeat_times∈[0,255],支持的数据类型为:Scalar(int16/int32/int64/uint16/uint32/uint64)、立即数(int)、Expr(int16/int32/int64/uint16/uint32/uint64),当repeat_times为立即数时,不支持0。
- dst_rep_stride/src_rep_stride∈[0,255] ,单位为32B。支持的数据类型:Scalar(int16/int32/int64/uint16/uint32/uint64)、立即数(int)、Expr(int16/int32/int64/uint16/uint32/uint64)。
- dst和src的地址不能重叠。
- scalar参数支持Scalar/立即数(int/float)两种数据类型。
- 为了节省地址空间,开发者可以定义一个Tensor,供源操作数与目的操作数同时使用(即地址重叠),相关约束如下:
- 对于单次repeat(repeat_times=1),且源操作数与目的操作数之间要求100%完全重叠,不支持部分重叠。
- 对于多次repeat(repeat_times>1),若源操作数与目的操作数之间存在依赖,即第N次迭代的目的操作数是第N+1次的源操作数,这种情况是不支持地址重叠的。
- 操作数地址偏移对齐要求请见通用约束。