通用定义
功能说明
此为对归约指令的通用格式,指令对当前迭代的相邻内对(elements)源操作数进行统一处理。注:这不是真正的指令。
函数原型
instruction (mask, dst, src, repeat_times, dst_rep_stride, src_rep_stride)
参数说明
参数名称 |
输入/输出 |
含义 |
---|---|---|
instruction |
输入 |
指令名称,TIK DSL中为全小写字符串。 |
mask |
输入 |
请参考表1中mask参数描述。 |
dst |
输出 |
目的操作数,tensor起始element。 Tensor的scope为Unified Buffer。 |
src |
输入 |
源操作数,tensor起始element。 Tensor的scope为Unified Buffer。 |
repeat_times |
输入 |
重复迭代次数 |
dst_rep_stride |
输入 |
相邻迭代间,目的操作数相同block地址步长。 |
src_rep_stride |
输入 |
相邻迭代间,源操作数相同block地址步长。 |
注意事项
- repeat_times∈[0,255]。支持的数据类型为:Scalar(int16/int32/int64/uint16/uint32/uint64)、立即数(int)、Expr(int16/int32/int64/uint16/uint32/uint64)。当repeat_times为立即数时,不支持0。
- 每个repeat的并行度取决于数据精度、芯片版本,以下以PAR代表并行度。
- dst_rep_stride/src_rep_stride
,支持Scalar(int16/int32/int64/uint16/uint32/uint64)、立即数(int)、Expr(int16/int32/int64/uint16/uint32/uint64)。
针对Atlas 200/300/500 推理产品,当dst_rep_stride传入0时,按照1处理。
针对Atlas 训练系列产品,当dst_rep_stride传入0时,按照1处理。
- 需注意dst_rep_stride的实现方式有所不同,单位为128B。
- 为了节省地址空间,开发者可以定义一个Tensor,供源操作数与目的操作数同时使用(即地址重叠),相关约束如下:
- 对于单次repeat(repeat_times=1),且源操作数与目的操作数之间要求100%完全重叠,不支持部分重叠。
- 对于多次repeat(repeat_times>1),若源操作数与目的操作数之间存在依赖,即第N次迭代的目的操作数是第N+1次的源操作数,这种情况是不支持地址重叠的。
- 操作数地址偏移对齐要求请见通用约束。
父主题: 对归约