开发者
下载
[object Object][object Object]

[object Object]

使用索引Tile或编译时掩码模式来收集/选择元素。

[object Object]

基于索引的gather(概念性定义):

[object Object][object Object]。对于 [object Object][object Object]

dsti,j=src0 ⁣[indicesi,j]\mathrm{dst}_{i,j} = \mathrm{src0}\!\left[\mathrm{indices}_{i,j}\right]

确切的索引解释和边界行为由实现定义。

基于掩码模式的gather是由 [object Object] 控制的实现定义的选择/归约操作。

[object Object]

基于索引的gather:

[object Object]

基于掩码模式的gather:

[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](GT或EQ)将每个元素 [object Object] 与阈值 [object Object] 比较。匹配元素的索引被收集到 [object Object] 中。每行的匹配数量存储在 [object Object] 中。[object Object] 参数指定起始索引值。

[object Object]
  • Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品:
    • [object Object] 必须是 [object Object][object Object]
    • [object Object] 必须是 [object Object][object Object],或 [object Object](仅EQ模式)。
    • [object Object] 必须是 [object Object][object Object]
    • [object Object] 必须是 [object Object][object Object]
  • Ascend 950PR/Ascend 950DT:
    • [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]
  • 基于索引的gather:实现检查 (Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品):
    • [object Object] 必须是2或4字节(b16/b32)。
    • [object Object] 必须是4字节(b32: [object Object][object Object])。
    • [object Object] 必须与 [object Object] 类型相同。
    • [object Object] 必须与 [object Object] 类型相同。
    • [object Object][object Object]
    • [object Object](连续的目标存储)。
  • 基于索引的gather:实现检查 (Ascend 950PR/Ascend 950DT):
    • [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]
  • 基于掩码模式的gather:实现检查 (Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品):
    • 源元素大小必须是[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](连续的目标存储)。
  • 基于掩码模式的gather:实现检查 (Ascend 950PR/Ascend 950DT):
    • 源元素大小必须是[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][object Object][object Object][object Object] 之一。
    • 支持的数据类型限制为目标定义的集合(通过实现中的 [object Object] 强制执行),且 [object Object][object Object](连续的目标存储)。
  • 基于比较的gather:实现检查:类型与 [object Object] 约束详见 一节。
  • 边界 / 有效性:
    • 索引边界不通过显式运行时断言进行验证;超出范围的索引行为由目标定义。
  • 临时Tile:
    • 基于索引的Gather (Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品):C++ API需要显式传入 [object Object] Tile。[object Object] 必须与 [object Object] 类型相同([object Object][object Object])。[object Object][object Object]。tmp Tile用于存放b16源类型的 [object Object] 中间结果供 [object Object] 使用;对于b32源类型,结果直接写入 [object Object],但API仍需要 [object Object]
    • 基于索引的Gather (Ascend 950PR/Ascend 950DT)[object Object] Tile被接受但不使用。Ascend 950PR/Ascend 950DT硬件无需临时缓冲区即可处理基于索引的Gather。
    • 基于比较的Gather (Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品):C++ API需要显式传入 [object Object] Tile,该Tile作为三个内部区域的合并暂存缓冲区:
      1. cmpsTmp(比较结果位图):偏移量0,以 [object Object] 存储,大小 = [object Object]字节。
      2. indexTmp(索引数组):偏移量 = [object Object],以 [object Object] 存储,大小 = [object Object]字节。
      3. cvtTmp(转换后的k值数组):偏移量 = [object Object] + [object Object],以 [object Object] 存储,大小 = [object Object]字节。 最小tmp大小必须满足: tmpSizeRowstmp×Colstmp+Rowssrc×Colssrc×sizeof(DTypedst)+Rowssrc×sizeof(DTypesrc)\text{tmpSize} \ge \text{Rows}_\text{tmp} \times \text{Cols}_\text{tmp} + \text{Rows}_\text{src} \times \text{Cols}_\text{src} \times \text{sizeof(DType}_\text{dst}\text{)} + \text{Rows}_\text{src} \times \text{sizeof(DType}_\text{src}\text{)}
    • 基于比较的Gather (Ascend 950PR/Ascend 950DT)[object Object] Tile被接受但不使用。Ascend 950PR/Ascend 950DT硬件无需临时缓冲区即可处理基于比较的Gather。
[object Object][object Object]
[object Object]
[object Object]
[object Object]
[object Object][object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]