将当前NPU的数据广播到并行组中所有rank。调用方NPU为根节点,其数据将被复制到所有其他NPU。
只有根节点需要执行 [object Object]。非根节点只需确保在操作期间其目标缓冲区已分配且可写。在非根节点上调用 [object Object] 属于未定义行为。
大Tile支持:当GlobalTensor在行和/或列方向超出UB(统一缓冲区)Tile容量时,传输将通过二维滑动自动分块。
操作完成后:
其中 为rank总数,[object Object] 为调用方NPU。
同步形式:
[object Object]
降级时会为GM→UB→GM数据路径引入UB暂存Tile;C++内建接口需要显式传入 [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] 时,可变参数的第一个参数必须是包含CKE slot虚拟地址和gate mask的 [object Object]。AIV kernel触发CKE gate,实际的广播数据路径在CCU引擎上执行。
- 类型约束:
[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]
使用两个UB Tile,将下一块的TLOAD与当前块的TSTORE重叠执行。
[object Object]