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

将当前NPU的数据广播到并行组中所有rank。调用方NPU为根节点,其数据将被复制到所有其他NPU。

只有根节点需要执行 [object Object]。非根节点只需确保在操作期间其目标缓冲区已分配且可写。在非根节点上调用 [object Object] 属于未定义行为。

大Tile支持:当GlobalTensor在行和/或列方向超出UB(统一缓冲区)Tile容量时,传输将通过二维滑动自动分块。

[object Object]

操作完成后:

dsti,j(k)=srci,j(root)k[0,N)\mathrm{dst}^{(k)}_{i,j} = \mathrm{src}^{(\text{root})}_{i,j} \quad \forall k \in [0, N)

其中 NN 为rank总数,[object Object] 为调用方NPU。

[object Object]

同步形式:

[object Object]

降级时会为GM→UB→GM数据路径引入UB暂存Tile;C++内建接口需要显式传入 [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,实际的广播数据路径在CCU引擎上执行。

[object Object]
  • 类型约束
    • [object Object] 必须等于 [object Object]
    • [object Object] 必须等于 [object Object]
  • 内存约束
    • [object Object] 必须指向本地内存(当前NPU)。
    • [object Object](或 [object Object] / [object Object])必须预先在UB中分配。
  • ParallelGroup约束
    • [object Object] 必须指向rank [object Object] 的目标缓冲区(从根节点视角看到的远端GM)。
    • [object Object] 标识调用方NPU为广播根节点。
    • 所有目标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]

使用两个UB Tile,将下一块的TLOAD与当前块的TSTORE重叠执行。

[object Object]