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

Reduce操作:从多个远端NPU收集数据并在本地执行逐元素归约。

只有根节点需要执行 [object Object]。非根节点只需确保在操作期间其源缓冲区已就绪且保持有效。在非根节点上调用 [object Object] 属于未定义行为。

大Tile支持:当GlobalTensor在行和/或列方向超出UB Tile容量时,归约操作将通过二维滑动自动分块。

[object Object]

对有效区域内每个元素 [object Object]

dsti,jlocal=r=0N1srci,j(r)\mathrm{dst}^{\mathrm{local}}_{i,j} = \bigoplus_{r=0}^{N-1} \mathrm{src}^{(r)}_{i,j}

其中 NN 为rank总数,\oplus 为归约运算(求和、取最大值、取最小值等)。

[object Object]

同步形式:

[object Object]

降级时会为reduce流水线引入内部累加Tile和接收Tile;C++内建接口需要显式传入 [object Object][object Object](或 [object Object][object Object][object Object])操作数。

[object Object]
  • [object Object]
    • [object Object](默认)
    • [object Object](Ascend 950PR/Ascend 950DT,仅NPU_ARCH 3510)
[object Object]

声明于 [object Object]

[object Object]

[object Object] 时,可变参数的第一个参数必须是包含CKE slot虚拟地址和gate mask的 [object Object]。AIV kernel触发CKE gate,实际的reduce数据路径在CCU引擎上执行。

[object Object]
  • 类型约束
    • [object Object] 必须等于 [object Object]
    • [object Object] 必须等于 [object Object]
  • 内存约束
    • [object Object] 必须指向本地内存(当前NPU)。
    • [object Object][object Object](或 [object Object][object Object][object Object])必须为预先分配的UB Tile。
  • ParallelGroup约束
    • [object Object] 必须指向rank [object Object] 的源缓冲区(从根节点视角看到的远端GM)。
    • [object Object] 标识调用方NPU为reduce根节点。
    • 所有源tensor假定具有相同的形状和步幅。
  • 分块模式约束(数据超出单个UB Tile时):
    • [object Object] 具有静态 [object Object],则 [object Object] 必须能被 [object Object] 整除。如需支持不足一行的情况,请使用 [object Object] ValidRow的Tile。
    • [object Object] 具有静态 [object Object],则 [object Object] 必须能被 [object Object] 整除。如需支持不足一列的情况,请使用 [object Object] ValidCol的Tile。
[object Object]
[object Object][object Object]
[object Object]
[object Object]
[object Object]