接口功能:将 tensor
[object Object]中的值按指定的轴和[object Object]指定的位置关系写入或规约到 tensor[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]。
示例: 对于一个 3D tensor,
[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]的维度数应该小于等于 8。[object Object]中对应维度[object Object]的值必须在[object Object]之间。
aclnnScatterReduce 和 aclnnInplaceScatterReduce 实现相同的规约 scatter 功能,使用区别如下,请根据自身实际场景选择合适的算子。
[object Object]:需新建一个输出张量对象存储计算结果。[object Object]:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。
每个算子分为,必须先调用“aclnnScatterReduceGetWorkspaceSize”或者“aclnnInplaceScatterReduceGetWorkspaceSize”接口获取计算所需 workspace 大小以及包含了算子计算流程的执行器,再调用“aclnnScatterReduce”或者“aclnnInplaceScatterReduce”接口执行计算。
[object Object]
[object Object]
[object Object]
[object Object]
- 确定性计算:
- 是否进入确定性路径取决于底层后端能力与上层 deterministic 配置。
- 在
[object Object]上,当[object Object]为真,[object Object]属于[object Object]时,会禁用[object Object]和[object Object],收敛到[object Object]legacy kernel 的单核调度路径。 - 在
[object Object]上,deterministic 能力由独立的 tiling / kernel 分支承接,但不同 reduction 模式的支持范围与[object Object]并不完全一致。
- 接口边界约束:
- 本页接口显式透传
[object Object],是规约 scatter 的统一公共入口。 - 若只需要固定
[object Object]语义且不想透传[object Object],可使用[object Object]。 [object Object]仍保留传统[object Object]路径,但不显式透传[object Object]。
- 本页接口显式透传
aclnnScatterReduce示例代码:
[object Object]