行广播减法:从 [object Object] 的每一行中减去扩展操作数的每行标量。
指令支持两种模式,由扩展操作数的布局决定(当 [object Object] 与 [object Object] 形状匹配时为 [object Object],当 [object Object] 与 [object Object] 形状匹配时为 [object Object]):
- 模式1:扩展操作数为 ColMajor 布局,单列(每行一个标量)。每个标量广播到整行。
- 模式2:扩展操作数为 RowMajor 布局,每行
[object Object]列(每行一个32字节块)。每个32字节块在向量重复步长内自然重复,提供行级广播。
设 [object Object] 和 [object Object]。
设 [object Object] 为从扩展操作数中获取的每行标量(每行一个值,ColMajor布局)。
对于 [object Object] 和 [object Object]:
其中 [object Object] 指代与 [object Object] 形状匹配的全尺寸操作数(可为 [object Object] 或 [object Object])。
设 [object Object] 为第 [object Object] 行从扩展操作数中获取的32字节块(RowMajor布局,每行 [object Object] 个值)。该块在每个向量重复步长内自然重复。
对于 [object Object] 和 [object Object]:
同步形式:
[object Object]
[object Object]
[object Object]
声明于 [object Object]:
[object Object]
[object Object]
[object Object][object Object]、[object Object]、[object Object]必须是以下之一:[object Object]、[object Object]、[object Object]、[object Object](适用于Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品和Ascend 950PR/Ascend 950DT),[object Object]、[object Object](仅适用于Ascend 950PR/Ascend 950DT)。[object Object]必须为 RowMajor([object Object])。[object Object]或[object Object]中必须恰好一个与[object Object]的有效形状相同(即[object Object]且[object Object]),该操作数为全尺寸操作数。另一个操作数为扩展操作数(行广播源)。- 全尺寸操作数必须为 RowMajor(
[object Object])。
当扩展操作数为 ColMajor([object Object])时:
- 其有效列数必须为 1(每行一个标量):
[object Object]。 - 其有效行数必须等于
[object Object]:[object Object]。
当扩展操作数为 RowMajor([object Object])时:
- 其有效列数必须为 32 / sizeof(T)(每行一个32字节块):
[object Object]。- 对于
[object Object]/[object Object]/[object Object]:[object Object]。 - 对于
[object Object]/[object Object]/[object Object]:[object Object]。
- 对于
- 其有效行数必须等于
[object Object]:[object Object]。
具体的布局、分形和对齐约束可能因后端目标而异。参见 [object Object] 下的后端头文件。
C++ API提供了显式传入 [object Object] 的重载。该重载仅支持模式1(ColMajor扩展操作数,每行标量)。
- Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品:tmp Tile作为广播缓冲区使用。ColMajor扩展操作数的每行标量值通过
[object Object]指令广播到tmp缓冲区,为每行创建一个32字节块,然后在二元运算中作为扩展操作数使用。[object Object]指令的repeat stride为8个块(256字节),每个repeat处理8行。最小tmp大小计算:- 公共参数:
[object Object],[object Object]。
- 当
[object Object]时: - 当
[object Object]时:- 操作采用循环方式,每次循环最多30个repeat(240行)。tmp缓冲区在各循环间复用,每次循环需要:
- 对于任何模式1调用,一个紧凑的形状无关上界为 8KB(8192Byte)。
- 不带
[object Object]的3参数重载支持模式1和模式2。对于模式1,使用内部8KB缓冲区([object Object])。对于模式2,不需要广播缓冲区。
- 公共参数:
- Ascend 950PR/Ascend 950DT:
[object Object]Tile被接受但不使用([object Object])。Ascend 950PR/Ascend 950DT硬件通过[object Object]指令的广播模式原生支持行广播,因此不需要临时缓冲区。
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]