已关闭
[Requirement|需求建议]: ops-nn 新增 TensorScatterSub 算子(Ascend950) #6302
xuejinghui创建于 25 天前关闭于 25 天前
25 天前 添加了label:requirement
Xxuejinghui
25 天前 修改标题为 “[Requirement|需求建议]: ops-nn 新增 TensorScatterSub 算子(Ascend950)”,原标题为“[Requirement|需求建议]: 11”
25 天前 修改标题为 “[Requirement|需求建议]: ops-nn 新增 TensorScatterSub 算子(Ascend950)”,原标题为“[Requirement|需求建议]: 11”
25 天前 修改了issue 的描述
xuejinghui
25 天前 评论:
25 天前 评论:
/assign


25 天前 将 xuejinghui 设为负责人
25 天前 关闭了 issue
25 天前 添加了label:resolved
需求建议:ops-nn 新增 TensorScatterSub 算子(Ascend950)
1. 背景与动机
TensorScatterSub 是 TensorFlow 同名算子(
tf.tensor_scatter_nd_sub/tf.compat.v1.tensor_scatter_nd_sub)对应的图算子,语义为:将输入 x 拷贝到输出 y,再按 indices 指定的位置,逐条将 updates 中对应的 slice 从 y 中减去。现状问题:
TensorScatterSubFusionPass融合规则(A2/A3 图模式下将 TensorScatterSub 无条件融合为 TensorMove + ScatterNdSub),无独立 kernel;2. 算子定义
3. 实现方案
arch35 SIMT 两阶段确定性实现(以库上 scatter_nd_sub 为蓝本,kernel Phase2 与其逐行同源):
asc_syncthreads()保证 slice 间写可见,规避重复索引写冲突、保证确定性;索引运算保持 int64 防越界检查前溢出回绕芯片支持:950PR/950DT 由本目录 kernel 直接支持;A2/A3 经图模式融合规则(TensorScatterSubFusionPass)支持,无独立 kernel。
4. 交付内容(commit
39a2dfb09,21 个文件,+2507 行)op_host/(def、infershape、arch35/tiling)、op_kernel/arch35/(入口 + simt.h + tiling_data/key)op_graph/(proto.h、graph_infer.cpp)、docs/zh/op_list.md注册tests/ut/op_host/(tiling UT 11 例 + infershape UT 12 例,含动态 shape 全 -1/全 -2/混合用例)、tests/assets/golden.py、examples/test_geir_tensor_scatter_sub.cppREADME.mdscripts/kernel/binary_config/ascendc_config.json质量要点:
OP_LOGE_FOR_*系列宏(对齐库上规范)OP_LOGD日志,支持 unknown rank({-2})透传与部分未知维(-1 逐维免疫)tf.tensor_scatter_nd_sub主路径(any_k 封装支持 rank-1 索引、K>5 stride 展平、标量 updates 归一化),超大 tensor(>2³¹ 元素)纯 TF 分块兜底;同时注册 Kernel/GEIR 与tf.tensor_scatter_nd_sub、tf.compat.v1.tensor_scatter_nd_sub两个 E2E Spec5. 验证结论
build.sh --soc=ascend950 --pkg通过6. 风险与遗留说明
cross_check L1(交付件中已按规范声明)7. 建议
建议合入 ops-nn master(index 分类)。合入后可:
_tf_scatter_nd_sub_any_k的 rank-1 updates 归一化修复回提至 golden 模板上游(同款缺陷已在 scatter_nd_sub 标杆 golden 中确认并修复)