Reduce操作:从多个远端NPU收集数据并在本地执行逐元素归约。
只有根节点需要执行 [object Object]。非根节点只需确保在操作期间其源缓冲区已就绪且保持有效。在非根节点上调用 [object Object] 属于未定义行为。
大Tile支持:当GlobalTensor在行和/或列方向超出UB Tile容量时,归约操作将通过二维滑动自动分块。
对有效区域内每个元素 [object Object]:
其中 为rank总数, 为归约运算(求和、取最大值、取最小值等)。
同步形式:
[object Object]
降级时会为reduce流水线引入内部累加Tile和接收Tile;C++内建接口需要显式传入 [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] 时,可变参数的第一个参数必须是包含CKE slot虚拟地址和gate mask的 [object Object]。AIV kernel触发CKE gate,实际的reduce数据路径在CCU引擎上执行。
- 类型约束:
[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]