| Files | Last commit | Last update |
|---|---|---|
fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6947 merge fix/add-v2-tensor-redirect-validation-20261031 into master fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 统一修复AddV2、TensorRedirect和MulNoNan的推导/参数校验,完善GEIR示例、测试参考及仓内小型ST。共27个变更文件、1个提交, experimental相对目标主线无改动。 - AddV2/TensorRedirect:修复合法rank0标量storage []/[1]等价表示被Tiling误拒绝的问题,保留非法shape/dtype校验,补InferShape rank8上限并透传首报诊断。TensorRedirect尾核仅计算实际分支长度,避免无用满块乘积溢出。 - 两份GEIR示例核对真实输出、修正节点名及Session所有权,完善失败诊断;对应Host/CPU Kernel UT保留。 - 完整引入[原PR !6971](https://gitcode.com/cann/ops-math/pull/6971)的MulNoNan提交6f1e0471275f6f1f7d08232dd823636b4a1a5279,8个文件内容与源提交逐字节一致:InferShape独立检查两个输入的rank上限,InferDataType检查四种合法dtype及同类型关系;保留广播、标量、动态shape/rank和空Tensor语义,新增负向UT。 - MulNoNan golden使用Torch完成物理dtype舍入,TensorFlow TestSpec增加FP64组合数学参考,覆盖TF CPU不支持的合法六维广播及CANN原有INT32输入域;示例支持--device-id=N,新增8条小shape仓内ST。 - 仓内ST合计4份CSV、24条,三个算子各8条。不同表头分开,相同表头在所属算子内合并;最大单Tensor约112KiB,未把GiB压力shape放入默认ST。外部测例仓库未改。 原AddV2/TensorRedirect的19个文件保持原内容,MulNoNan的8个文件完整导入,无冲突。AddV2看板中旧A2实验材料继续按来源分类,不混作A5修复;MulNoNan保留原A2/A3产品支持,不新增平台适配。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4378 - https://gitcode.com/cann/ops-math/issues/4387 ## 测试 先cherry-pick源提交,再squash为1提交;同一原始基点的完整binary diff及Git tree均不变。随后一次rebase到当次从官方主仓获取的master 58e411acd306ae5d391301bf2e21d25d1bf4fae5,27个文件内容均保持,相关算子/公共依赖无主线增量。最终受测提交为af1eeea72c5c773ed3fb136d9ea75d3228b9d90d。 | 验证 | 本轮结果 | |---|---| | 指定本地CI | /workspace/CI-skills/ci_local_check.sh完整通过;A5 ascend950,并发2;27文件pre-commit、隔离OAT、链接/SKIP契约及golden语法检查PASS | | 构建/UT | 三份GEIR示例syntax-only、三算子定向包及package/Host loader GE依赖检查PASS;Host UT 151/151、Graph UT 6/6、TensorRedirect CPU Kernel UT 2/2。API阶段0例,不计实际UT通过 | | 运行包来源 | 安装本轮CI生成的标准.run,177个payload文件SHA256全部一致,含17个预编译对象及三个算子注册信息;未使用旧包冒充本轮构建 | | 组合仓内ST | 三算子24/24 binary Kernel通过,全部BINARY_MATCH;MulNoNan另8/8 static Kernel及8/8 GEIR数值通过,共40次执行 | | 原修复证据 | AddV2/TensorRedirect前期128条NPU正向、两份C++示例实机完整输出/文件失败路径分别保留,不与本轮执行次数直接累加;MulNoNan原PR更广的历史验证在源PR记录,本轮不冒称重跑 | 实机Ascend950PR_9579/device0,使用当前任务独立CANN_Revise 9.3.0和干净的任务TTK 5a7337679b3a4a1cf8a1346392adc9a65cfd378f;每次TTK显式--pc=1,golden来自各算子代码仓。 本地缺GPU/XPU端点,命令显式--compare binary比较导入后的CPU golden;有限值按binary_equal核对,TTK对双方NaN位置一致的元素判相等,不宣称NaN payload逐位一致或默认GPU cross_check已通过。GEIR是数值验证,不当作独立运行时rank元数据dump或全部清理故障路径验证。本轮仅A5实机/CI,源PR已有其他产品证据不作为本轮新增测试。MulNoNan直接Kernel 0D在线编译问题、性能、完整L0/L1及全部资源故障均不在此次合并的通过结论中。已向同一受测SHA提交[compile触发线上CI](https://gitcode.com/cann/ops-math/merge_requests/6947#note_197811371);[线上流水线](https://gitcode.com/CANN/ops-math/actions/runs/42aadc4ec89646c2888de81d318470cb)已启动,结果待出,不由本地通过推断。 ## 文档更新 - AddV2/TensorRedirect继续保留所有原产品能力,按用户指引保留格式整改和删除冗余范围声明;没有重新添加当前源码/实测平台范围提示。 - MulNoNan README完整保留源PR内容:全局rank8及动态rank运行时上限表述、产品差异列表和必要设备选择参数;保留原A2/A3支持,不因内部TestSpec增加用户接口声明。 - 组合提交的来源、测试范围及限制写入本PR与任务独立验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:合并MulNoNan测试参考/负向UT及小型ST See merge request: cann/ops-math!6947 | 7 days ago | |
fix: harden July math operators and relocate MulNoNan dtype inference Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6533 merge fix/july-five-ops-hardening-20261020 into master fix: harden July math operators and relocate MulNoNan dtype inference Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 TensorRedirect示例以字节填充生成FLOAT数据,且未完整设置Data输出描述、校验输出和传播文件写入错误;AddV2示例的两个Data使用相同索引,也未把输出校验和文件写入结果作为成功条件。本次修正这些路径,补齐相关资源清理,使示例在结果或文件写入异常时返回失败。 同步将TensorRedirect在Ascend 950PR&950DT系列产品上的rank描述对齐为[0,8],包括标量;AddV2约束说明对齐其参数表和实际支持类型。 基于主仓master 21854b2844e6d65ceecd2de0c7cb65efa44e41de,前次两算子修订受测提交:44980699fb1a7d5df1d5fd1a0d5b23141183ce40。 **MulNoNan:编译信息布局、CPU参考及GE示例** - math/mul_no_nan/op_host/arch35/mul_no_nan_tiling_arch35.h:用Ops::Base::BroadcastCompileInfo替代私有两字段结构。原结构为16字节,而BroadcastBaseTiling在平台对象为空时按带isAscendC字段的24字节结构读取,存在coreNum错位及ubSize越界读取风险;统一类型后沿用既有TilingPrepare初始化逻辑。现有Host UT的聚合初始化同步增加isAscendC字段。 - tests/assets/golden.py:CPU参考改用PyTorch乘法和where,移除Kernel/GEIR路径对TensorFlow的导入依赖;浮点中间值使用float64,普通模式回传原dtype,Promote模式保留高精度;INT32保留原生整数乘法回绕,x2为0时仍严格选择0。TensorFlow E2E原有注册与默认CPU回退保持原样。 - examples/arch35/test_geir_mul_no_nan.cpp:四种dtype的输入缓冲使用unique_ptr,检查分配和SetData;第二Data索引改为1并补齐输出描述;检查Session创建;严格核对输出数量、完整shape、dtype、缓冲大小和所有数值。保留原有27个场景,新增--list和单场景选择,并按仓库要求格式化。 - examples/arch35/CMakeLists.txt:新增独立GE示例构建配置,按ASCEND_HOME_PATH查找本套CANN的头文件及GE库。 - README与Proto:将950产品rank≤8限定到产品差异说明,补充GE空Tensor输出语义;将不存在的tf.math.multiply_no_nans改为tf.math.multiply_no_nan并区分浮点对应关系和INT32扩展;统一dtype标点及GE图模式入口。其他产品支持标记不变。 **MulNoNan:接手推导注册迁移** - dtype推导从op_host/mul_no_nan_infershape.cpp迁入op_graph/mul_no_nan_graph_infer.cpp,增加空context、两个输入dtype一致性检查,并返回输出dtype写入状态。 - 原4条dtype UT随注册移动至Graph测试目录,增加混合dtype拒绝用例。既有广播shape、编译信息修复、PyTorch golden和27场景示例保留,未修改Kernel算法。 - 仅导入源PR #6548中的MulNoNan部分;RaggedBinCount的3个文件没有导入,也不改写或关闭包含该排除项的原PR:https://gitcode.com/cann/ops-math/pull/6548。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3692 ## 测试 2026-10-21文档精简提交de3b179a823a7a9aa20e5813c9d74d680edf7b94:完成本次范围的README检查、链接/调用表渲染、diff及提交钩子检查;确认相对上一提交仅README变化,未重跑NPU、TTK或构建。此前设备验证仍归属原受测提交。 **接手合并后验证** - 受测提交:b0526c4e37ee8ba6abbab528e5adba66c7c02caa;定向JIT包构建/部署通过,构建并行度≤8。 - 当前普通CANN环境下,MulNoNan 6条用例、静态/动态12次执行通过:FP32/FP16/BF16/INT32等形、标量、交叉广播;混合dtype1条到达GE并由当前包的存量MulNoNanVerify按预期拒绝,不计作新V2 dtype分支执行覆盖。 - 使用July本地TTK 92496503b70e2e05892d15dd5b78d1f80eae77df、算子仓golden、已核对哈希的冻结输入,显式--pc=1,Promote/stat_rel_err;未使用LD_PRELOAD或注册屏蔽。 - 另有相同6条/12次诊断执行通过,用于迁移入口排查,独立标记,不能替代正式canndev产品包验证。配套canndev PR:https://gitcode.com/cann/canndev/pull/82602,目前受内部SDK依赖阻塞。 - 本次pre-commit/OAT、diff核对通过;MulNoNan示例/文档在本阶段未再修改,原27场景记录继续对应下述补扫提交。本次未重跑Host/Graph UT或全量本地CI。 补扫阶段受测提交:129d2d00dac66ed7d351ad5691dd2fd80b2c3171。以下该阶段结果保持原始归属,不重复计作接手后重跑。 **本次MulNoNan补扫验证** - build.sh --pkg --jit --soc=ascend950 --ops=tensor_redirect,add_v2,mul_no_nan -j8构建及定向vendor部署通过。 - TTK GEIR正向8/8:FP32、FP16、BF16、INT32、双向广播、标量、rank=8和空Tensor。 - TTK动态GEIR普通FP32 1/1通过。 - TTK GEIR特殊值4/4:三种浮点dtype覆盖NaN/Inf乘零、负零、仅x2判零及非零乘法传播;INT32覆盖边界溢出回绕。适配器调用仓内golden并对固定数学期望、返回dtype和Promote结果作独立断言。 - 最终GE示例27/27场景通过,逐场景独立进程执行;错误场景名和多余参数两条负向调用返回预期255。 - 补扫阶段的4条构建调用命令均实际执行通过;产物与27个场景验证使用的二进制哈希一致。pre-commit、OAT及文档检查通过。 - Host UT源码同步适配结构初始化,未单独执行;本次未运行全量本地CI、性能测试或其他产品验证。 **此前已交付算子的验证记录(对应此前受测提交)** 环境:Ascend950PR_9579,CANN 9.3.0~weekly.20260923.01,Python 3.12.9,TTK 92496503b70e2e05892d15dd5b78d1f80eae77df。构建并行度不超过8,TTK均显式使用--pc=1。 - build.sh --pkg --jit --soc=ascend950 --ops=tensor_redirect,add_v2 -j8构建及部署通过。 - TTK GEIR正向8/8:TensorRedirect覆盖标量、rank=8、普通及空Tensor;AddV2覆盖普通、广播、标量及空Tensor。 - 两个交付GE示例均原样编译、在NPU运行并退出0;校验shape/dtype,TensorRedirect逐bit比较输出,AddV2逐元素检查预期4.0。 - 两个示例分别将输入dump目标预置为目录,图执行成功后文件打开失败,程序均按预期返回255。 - pre-commit、全部5个修改文件的OAT和git diff --check通过;README链接、产品行、参数能力并集及渲染结构检查通过。 ## 文档更新 MulNoNan README删除多余的编译运行段落及场景选择说明,保留原有调用表、示例和算子IR链接。示例源码、CMake配置及算子实现未变。 新增算子的逐文件文档修订见上文;已按本次文档与示例指引核对产品完整名称、能力并集、链接、围栏和渲染,运行全部修改后的示例场景。40条原始扫描记录已逐项处置:对缺少其他产品实现、基线INI shape=all或私有format等证据不足项,保留既有支持信息和当前框架限制,不据此修改注册范围。 TensorRedirect的950产品rank及Proto说明对齐当前实现和标量用例,其他产品既有rank说明保留。AddV2明确不支持DOUBLE/COMPLEX128并指向既有产品差异说明。其他产品的运行行为未在本次设备上认证。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6533 | 18 days ago | |
fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6947 merge fix/add-v2-tensor-redirect-validation-20261031 into master fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 统一修复AddV2、TensorRedirect和MulNoNan的推导/参数校验,完善GEIR示例、测试参考及仓内小型ST。共27个变更文件、1个提交, experimental相对目标主线无改动。 - AddV2/TensorRedirect:修复合法rank0标量storage []/[1]等价表示被Tiling误拒绝的问题,保留非法shape/dtype校验,补InferShape rank8上限并透传首报诊断。TensorRedirect尾核仅计算实际分支长度,避免无用满块乘积溢出。 - 两份GEIR示例核对真实输出、修正节点名及Session所有权,完善失败诊断;对应Host/CPU Kernel UT保留。 - 完整引入[原PR !6971](https://gitcode.com/cann/ops-math/pull/6971)的MulNoNan提交6f1e0471275f6f1f7d08232dd823636b4a1a5279,8个文件内容与源提交逐字节一致:InferShape独立检查两个输入的rank上限,InferDataType检查四种合法dtype及同类型关系;保留广播、标量、动态shape/rank和空Tensor语义,新增负向UT。 - MulNoNan golden使用Torch完成物理dtype舍入,TensorFlow TestSpec增加FP64组合数学参考,覆盖TF CPU不支持的合法六维广播及CANN原有INT32输入域;示例支持--device-id=N,新增8条小shape仓内ST。 - 仓内ST合计4份CSV、24条,三个算子各8条。不同表头分开,相同表头在所属算子内合并;最大单Tensor约112KiB,未把GiB压力shape放入默认ST。外部测例仓库未改。 原AddV2/TensorRedirect的19个文件保持原内容,MulNoNan的8个文件完整导入,无冲突。AddV2看板中旧A2实验材料继续按来源分类,不混作A5修复;MulNoNan保留原A2/A3产品支持,不新增平台适配。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4378 - https://gitcode.com/cann/ops-math/issues/4387 ## 测试 先cherry-pick源提交,再squash为1提交;同一原始基点的完整binary diff及Git tree均不变。随后一次rebase到当次从官方主仓获取的master 58e411acd306ae5d391301bf2e21d25d1bf4fae5,27个文件内容均保持,相关算子/公共依赖无主线增量。最终受测提交为af1eeea72c5c773ed3fb136d9ea75d3228b9d90d。 | 验证 | 本轮结果 | |---|---| | 指定本地CI | /workspace/CI-skills/ci_local_check.sh完整通过;A5 ascend950,并发2;27文件pre-commit、隔离OAT、链接/SKIP契约及golden语法检查PASS | | 构建/UT | 三份GEIR示例syntax-only、三算子定向包及package/Host loader GE依赖检查PASS;Host UT 151/151、Graph UT 6/6、TensorRedirect CPU Kernel UT 2/2。API阶段0例,不计实际UT通过 | | 运行包来源 | 安装本轮CI生成的标准.run,177个payload文件SHA256全部一致,含17个预编译对象及三个算子注册信息;未使用旧包冒充本轮构建 | | 组合仓内ST | 三算子24/24 binary Kernel通过,全部BINARY_MATCH;MulNoNan另8/8 static Kernel及8/8 GEIR数值通过,共40次执行 | | 原修复证据 | AddV2/TensorRedirect前期128条NPU正向、两份C++示例实机完整输出/文件失败路径分别保留,不与本轮执行次数直接累加;MulNoNan原PR更广的历史验证在源PR记录,本轮不冒称重跑 | 实机Ascend950PR_9579/device0,使用当前任务独立CANN_Revise 9.3.0和干净的任务TTK 5a7337679b3a4a1cf8a1346392adc9a65cfd378f;每次TTK显式--pc=1,golden来自各算子代码仓。 本地缺GPU/XPU端点,命令显式--compare binary比较导入后的CPU golden;有限值按binary_equal核对,TTK对双方NaN位置一致的元素判相等,不宣称NaN payload逐位一致或默认GPU cross_check已通过。GEIR是数值验证,不当作独立运行时rank元数据dump或全部清理故障路径验证。本轮仅A5实机/CI,源PR已有其他产品证据不作为本轮新增测试。MulNoNan直接Kernel 0D在线编译问题、性能、完整L0/L1及全部资源故障均不在此次合并的通过结论中。已向同一受测SHA提交[compile触发线上CI](https://gitcode.com/cann/ops-math/merge_requests/6947#note_197811371);[线上流水线](https://gitcode.com/CANN/ops-math/actions/runs/42aadc4ec89646c2888de81d318470cb)已启动,结果待出,不由本地通过推断。 ## 文档更新 - AddV2/TensorRedirect继续保留所有原产品能力,按用户指引保留格式整改和删除冗余范围声明;没有重新添加当前源码/实测平台范围提示。 - MulNoNan README完整保留源PR内容:全局rank8及动态rank运行时上限表述、产品差异列表和必要设备选择参数;保留原A2/A3支持,不因内部TestSpec增加用户接口声明。 - 组合提交的来源、测试范围及限制写入本PR与任务独立验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:合并MulNoNan测试参考/负向UT及小型ST See merge request: cann/ops-math!6947 | 7 days ago | |
fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6947 merge fix/add-v2-tensor-redirect-validation-20261031 into master fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 统一修复AddV2、TensorRedirect和MulNoNan的推导/参数校验,完善GEIR示例、测试参考及仓内小型ST。共27个变更文件、1个提交, experimental相对目标主线无改动。 - AddV2/TensorRedirect:修复合法rank0标量storage []/[1]等价表示被Tiling误拒绝的问题,保留非法shape/dtype校验,补InferShape rank8上限并透传首报诊断。TensorRedirect尾核仅计算实际分支长度,避免无用满块乘积溢出。 - 两份GEIR示例核对真实输出、修正节点名及Session所有权,完善失败诊断;对应Host/CPU Kernel UT保留。 - 完整引入[原PR !6971](https://gitcode.com/cann/ops-math/pull/6971)的MulNoNan提交6f1e0471275f6f1f7d08232dd823636b4a1a5279,8个文件内容与源提交逐字节一致:InferShape独立检查两个输入的rank上限,InferDataType检查四种合法dtype及同类型关系;保留广播、标量、动态shape/rank和空Tensor语义,新增负向UT。 - MulNoNan golden使用Torch完成物理dtype舍入,TensorFlow TestSpec增加FP64组合数学参考,覆盖TF CPU不支持的合法六维广播及CANN原有INT32输入域;示例支持--device-id=N,新增8条小shape仓内ST。 - 仓内ST合计4份CSV、24条,三个算子各8条。不同表头分开,相同表头在所属算子内合并;最大单Tensor约112KiB,未把GiB压力shape放入默认ST。外部测例仓库未改。 原AddV2/TensorRedirect的19个文件保持原内容,MulNoNan的8个文件完整导入,无冲突。AddV2看板中旧A2实验材料继续按来源分类,不混作A5修复;MulNoNan保留原A2/A3产品支持,不新增平台适配。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4378 - https://gitcode.com/cann/ops-math/issues/4387 ## 测试 先cherry-pick源提交,再squash为1提交;同一原始基点的完整binary diff及Git tree均不变。随后一次rebase到当次从官方主仓获取的master 58e411acd306ae5d391301bf2e21d25d1bf4fae5,27个文件内容均保持,相关算子/公共依赖无主线增量。最终受测提交为af1eeea72c5c773ed3fb136d9ea75d3228b9d90d。 | 验证 | 本轮结果 | |---|---| | 指定本地CI | /workspace/CI-skills/ci_local_check.sh完整通过;A5 ascend950,并发2;27文件pre-commit、隔离OAT、链接/SKIP契约及golden语法检查PASS | | 构建/UT | 三份GEIR示例syntax-only、三算子定向包及package/Host loader GE依赖检查PASS;Host UT 151/151、Graph UT 6/6、TensorRedirect CPU Kernel UT 2/2。API阶段0例,不计实际UT通过 | | 运行包来源 | 安装本轮CI生成的标准.run,177个payload文件SHA256全部一致,含17个预编译对象及三个算子注册信息;未使用旧包冒充本轮构建 | | 组合仓内ST | 三算子24/24 binary Kernel通过,全部BINARY_MATCH;MulNoNan另8/8 static Kernel及8/8 GEIR数值通过,共40次执行 | | 原修复证据 | AddV2/TensorRedirect前期128条NPU正向、两份C++示例实机完整输出/文件失败路径分别保留,不与本轮执行次数直接累加;MulNoNan原PR更广的历史验证在源PR记录,本轮不冒称重跑 | 实机Ascend950PR_9579/device0,使用当前任务独立CANN_Revise 9.3.0和干净的任务TTK 5a7337679b3a4a1cf8a1346392adc9a65cfd378f;每次TTK显式--pc=1,golden来自各算子代码仓。 本地缺GPU/XPU端点,命令显式--compare binary比较导入后的CPU golden;有限值按binary_equal核对,TTK对双方NaN位置一致的元素判相等,不宣称NaN payload逐位一致或默认GPU cross_check已通过。GEIR是数值验证,不当作独立运行时rank元数据dump或全部清理故障路径验证。本轮仅A5实机/CI,源PR已有其他产品证据不作为本轮新增测试。MulNoNan直接Kernel 0D在线编译问题、性能、完整L0/L1及全部资源故障均不在此次合并的通过结论中。已向同一受测SHA提交[compile触发线上CI](https://gitcode.com/cann/ops-math/merge_requests/6947#note_197811371);[线上流水线](https://gitcode.com/CANN/ops-math/actions/runs/42aadc4ec89646c2888de81d318470cb)已启动,结果待出,不由本地通过推断。 ## 文档更新 - AddV2/TensorRedirect继续保留所有原产品能力,按用户指引保留格式整改和删除冗余范围声明;没有重新添加当前源码/实测平台范围提示。 - MulNoNan README完整保留源PR内容:全局rank8及动态rank运行时上限表述、产品差异列表和必要设备选择参数;保留原A2/A3支持,不因内部TestSpec增加用户接口声明。 - 组合提交的来源、测试范围及限制写入本PR与任务独立验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:合并MulNoNan测试参考/负向UT及小型ST See merge request: cann/ops-math!6947 | 7 days ago | |
fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6947 merge fix/add-v2-tensor-redirect-validation-20261031 into master fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 统一修复AddV2、TensorRedirect和MulNoNan的推导/参数校验,完善GEIR示例、测试参考及仓内小型ST。共27个变更文件、1个提交, experimental相对目标主线无改动。 - AddV2/TensorRedirect:修复合法rank0标量storage []/[1]等价表示被Tiling误拒绝的问题,保留非法shape/dtype校验,补InferShape rank8上限并透传首报诊断。TensorRedirect尾核仅计算实际分支长度,避免无用满块乘积溢出。 - 两份GEIR示例核对真实输出、修正节点名及Session所有权,完善失败诊断;对应Host/CPU Kernel UT保留。 - 完整引入[原PR !6971](https://gitcode.com/cann/ops-math/pull/6971)的MulNoNan提交6f1e0471275f6f1f7d08232dd823636b4a1a5279,8个文件内容与源提交逐字节一致:InferShape独立检查两个输入的rank上限,InferDataType检查四种合法dtype及同类型关系;保留广播、标量、动态shape/rank和空Tensor语义,新增负向UT。 - MulNoNan golden使用Torch完成物理dtype舍入,TensorFlow TestSpec增加FP64组合数学参考,覆盖TF CPU不支持的合法六维广播及CANN原有INT32输入域;示例支持--device-id=N,新增8条小shape仓内ST。 - 仓内ST合计4份CSV、24条,三个算子各8条。不同表头分开,相同表头在所属算子内合并;最大单Tensor约112KiB,未把GiB压力shape放入默认ST。外部测例仓库未改。 原AddV2/TensorRedirect的19个文件保持原内容,MulNoNan的8个文件完整导入,无冲突。AddV2看板中旧A2实验材料继续按来源分类,不混作A5修复;MulNoNan保留原A2/A3产品支持,不新增平台适配。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4378 - https://gitcode.com/cann/ops-math/issues/4387 ## 测试 先cherry-pick源提交,再squash为1提交;同一原始基点的完整binary diff及Git tree均不变。随后一次rebase到当次从官方主仓获取的master 58e411acd306ae5d391301bf2e21d25d1bf4fae5,27个文件内容均保持,相关算子/公共依赖无主线增量。最终受测提交为af1eeea72c5c773ed3fb136d9ea75d3228b9d90d。 | 验证 | 本轮结果 | |---|---| | 指定本地CI | /workspace/CI-skills/ci_local_check.sh完整通过;A5 ascend950,并发2;27文件pre-commit、隔离OAT、链接/SKIP契约及golden语法检查PASS | | 构建/UT | 三份GEIR示例syntax-only、三算子定向包及package/Host loader GE依赖检查PASS;Host UT 151/151、Graph UT 6/6、TensorRedirect CPU Kernel UT 2/2。API阶段0例,不计实际UT通过 | | 运行包来源 | 安装本轮CI生成的标准.run,177个payload文件SHA256全部一致,含17个预编译对象及三个算子注册信息;未使用旧包冒充本轮构建 | | 组合仓内ST | 三算子24/24 binary Kernel通过,全部BINARY_MATCH;MulNoNan另8/8 static Kernel及8/8 GEIR数值通过,共40次执行 | | 原修复证据 | AddV2/TensorRedirect前期128条NPU正向、两份C++示例实机完整输出/文件失败路径分别保留,不与本轮执行次数直接累加;MulNoNan原PR更广的历史验证在源PR记录,本轮不冒称重跑 | 实机Ascend950PR_9579/device0,使用当前任务独立CANN_Revise 9.3.0和干净的任务TTK 5a7337679b3a4a1cf8a1346392adc9a65cfd378f;每次TTK显式--pc=1,golden来自各算子代码仓。 本地缺GPU/XPU端点,命令显式--compare binary比较导入后的CPU golden;有限值按binary_equal核对,TTK对双方NaN位置一致的元素判相等,不宣称NaN payload逐位一致或默认GPU cross_check已通过。GEIR是数值验证,不当作独立运行时rank元数据dump或全部清理故障路径验证。本轮仅A5实机/CI,源PR已有其他产品证据不作为本轮新增测试。MulNoNan直接Kernel 0D在线编译问题、性能、完整L0/L1及全部资源故障均不在此次合并的通过结论中。已向同一受测SHA提交[compile触发线上CI](https://gitcode.com/cann/ops-math/merge_requests/6947#note_197811371);[线上流水线](https://gitcode.com/CANN/ops-math/actions/runs/42aadc4ec89646c2888de81d318470cb)已启动,结果待出,不由本地通过推断。 ## 文档更新 - AddV2/TensorRedirect继续保留所有原产品能力,按用户指引保留格式整改和删除冗余范围声明;没有重新添加当前源码/实测平台范围提示。 - MulNoNan README完整保留源PR内容:全局rank8及动态rank运行时上限表述、产品差异列表和必要设备选择参数;保留原A2/A3支持,不因内部TestSpec增加用户接口声明。 - 组合提交的来源、测试范围及限制写入本PR与任务独立验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:合并MulNoNan测试参考/负向UT及小型ST See merge request: cann/ops-math!6947 | 7 days ago | |
fix(add_v2,tensor_redirect): 加固边界校验、搬运与测试覆盖 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !5612 merge fix/addv2-tensorredirect-quality-hardening-20260911 into master fix(add_v2,tensor_redirect): 加固边界校验、搬运与测试覆盖 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 本PR对AddV2和TensorRedirect的Ascend 950PR/Ascend 950DT Ascend C实现进行质量加固,不修改其他产品的既有实现。实际变更17个文件(+1121/-237);正式ST保存在质量加固交付件中, tests/st及tests/ut/common公共辅助文件均不纳入本PR。 ### 改动概览 - AddV2补充输入输出origin/storage rank、shape、dtype、广播关系、空Tensor、负维及整数溢出校验;workspace改为读取编译信息或平台能力,并增加编译信息布局约束。 - TensorRedirect补充输入输出rank、shape、dtype、空Tensor及溢出校验;修正双缓冲空间对齐和DataCopyPad搬运边界,增加初始化失败与空Tensor提前返回,并规范化kernel入口文件名。 - 两个算子的TestSpec保留现有PyTorch golden实现,同时注册Torch和TensorFlow三方provider并分别验证。 - 两个算子的README补充逐产品dtype、静态/动态shape、rank及空Tensor差异,并明确实际调用方式。 ### 逐文件修改 #### TensorRedirect(11个文件) - conversion/tensor_redirect/CMakeLists.txt:规范License Header;仅为TensorRedirect Host UT目标补充CANN注册表头文件目录,不修改公共UT辅助文件。 - conversion/tensor_redirect/README.md:统一输出参数名为output_x,修正恒等传递语义,补充逐产品dtype、动态shape、rank及空Tensor差异,并明确仅支持GE图模式调用。 - conversion/tensor_redirect/op_host/arch35/tensor_redirect_tiling_arch35.cpp:补齐origin/storage rank、dtype、shape、负维、空Tensor和字节数溢出校验;空Tensor在shape乘积前识别;限制双缓冲UB及DataCopyPad块长,校验派生tiling参数,并从CompileInfo或平台读取核数、UB和workspace。 - conversion/tensor_redirect/op_host/tensor_redirect_def.cpp:将opFile.value从tensor_redirect_apt调整为规范化后的tensor_redirect入口名。 - conversion/tensor_redirect/op_kernel/arch35/tensor_redirect.h:让Init返回初始化结果;为GM Tensor设置每核有效长度;按对齐后的双缓冲容量初始化队列,并安全计算DataCopyPad字节长度。 - conversion/tensor_redirect/op_kernel/arch35/tensor_redirect_tiling_data.h:去除字段默认初始化,保持TilingData为可按字节初始化和序列化的trivial、standard-layout POD结构。 - conversion/tensor_redirect/op_kernel/tensor_redirect.cpp:由tensor_redirect_apt.cpp重命名;在创建TPipe前处理空Tensor和空workspace,并在各字节宽分支中检查InitBuffer初始化结果。 - conversion/tensor_redirect/tests/assets/golden.py:删除“独立PyTorch参考”的错误表述,在TestSpec中同时注册torch.clone和tf.identity三方provider。 - conversion/tensor_redirect/tests/ut/op_host/arch35/test_tensor_redirect_tiling_arch35.cpp:补充空context、origin rank、末尾零维空Tensor、字节数溢出、小/大UB、DataCopyPad上限等Host Tiling边界用例及通用不变量检查。 - conversion/tensor_redirect/tests/ut/op_kernel/CMakeLists.txt:新增Ascend 950 TensorRedirect Kernel UT目标并接入对应Host Tiling源码。 - conversion/tensor_redirect/tests/ut/op_kernel/test_tensor_redirect.cpp:新增空Tensor提前返回和单块正常搬运路径Kernel UT,验证零长度buffer不会初始化且正常路径可执行。 #### AddV2(6个文件) - math/add_v2/CMakeLists.txt:仅为AddV2 Host UT目标补充CANN注册表头文件目录,用于注册入口空context测试。 - math/add_v2/README.md:补充V2命名与广播语义、逐产品dtype/动态shape/rank/空Tensor差异,完善参数和广播说明,并明确仅支持GE图模式调用。 - math/add_v2/op_host/arch35/add_v2_tiling_arch35.cpp:新增支持dtype白名单、origin/storage rank、负维、元素数溢出和逐维广播结果校验;保证校验先于空Tensor早返;workspace改从CompileInfo或平台读取,并强化空context及平台资源检查。 - math/add_v2/op_host/arch35/add_v2_tiling_arch35.h:调整CompileInfo字段以匹配BroadcastCompileInfo前缀布局,新增isAscendC和libApiWorkspaceSize,并由静态断言约束字段偏移和结构大小。 - math/add_v2/tests/assets/golden.py:删除“独立PyTorch参考”的错误表述,在TestSpec中同时注册torch.add和tf.raw_ops.AddV2三方provider。 - math/add_v2/tests/ut/op_host/arch35/test_add_v2_tiling.cpp:适配新CompileInfo,补充workspace来源、空context、rank边界、dtype一致性、广播结果、负维、空Tensor、超大维及shape溢出等Host Tiling用例。 ## 关联的Issue - Closes #3195 ## 测试 - pre-commit:格式、clang-format、ruff、codespell通过;隔离固定oat-py==1.0.3一次检查17个完整变更文件,OAT通过。 - Host UT:111/111 PASS,其中AddV2 45个、TensorRedirect 66个。 - TensorRedirect Kernel UT:2/2 PASS。 - AddV2 release binary:L0 42/42、L1 509/509,精度、BINARY_MATCH和memory_oob均通过。 - TensorRedirect release binary:L0 30/30、L1 512/512,精度、BINARY_MATCH和memory_oob均通过。 - Torch/TensorFlow provider:AddV2各42/42,浮点适用集各18/18;TensorRedirect各30/30,浮点适用集各15/15。 - AddV2和TensorRedirect的动态源码JIT、GEIR验证均各1/1通过。 - README结构、Markdown、HTML标签、相对链接及OAT检查通过。 - 本地CI统一入口(定向、非全量):Ascend 950、Ascend 910B下的定向package构建及Host/API/Graph/Kernel UT目标均通过,未触发FULL_REQUIRED。 - 线上CI流水线bd81a7c634f54f869df1fdacbc66b796全量通过:PreBuild 5/5、Compile 35/35、UT 7/7、PreSmoke 3/3、后处理2/2。 - 未采集到有效device_us,不对性能作PASS结论;测试结论不外推到其他产品实现。 ## 文档更新 - [x] 更新math/add_v2/README.md。 - [x] 更新conversion/tensor_redirect/README.md。 - [x] 补充多产品能力差异及真实GE图模式调用说明。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他:质量加固与测试覆盖 See merge request: cann/ops-math!5612 | 1 month ago | |
fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6947 merge fix/add-v2-tensor-redirect-validation-20261031 into master fix(add_v2,tensor_redirect,mul_no_nan): 修复推导校验并规范测试参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 统一修复AddV2、TensorRedirect和MulNoNan的推导/参数校验,完善GEIR示例、测试参考及仓内小型ST。共27个变更文件、1个提交, experimental相对目标主线无改动。 - AddV2/TensorRedirect:修复合法rank0标量storage []/[1]等价表示被Tiling误拒绝的问题,保留非法shape/dtype校验,补InferShape rank8上限并透传首报诊断。TensorRedirect尾核仅计算实际分支长度,避免无用满块乘积溢出。 - 两份GEIR示例核对真实输出、修正节点名及Session所有权,完善失败诊断;对应Host/CPU Kernel UT保留。 - 完整引入[原PR !6971](https://gitcode.com/cann/ops-math/pull/6971)的MulNoNan提交6f1e0471275f6f1f7d08232dd823636b4a1a5279,8个文件内容与源提交逐字节一致:InferShape独立检查两个输入的rank上限,InferDataType检查四种合法dtype及同类型关系;保留广播、标量、动态shape/rank和空Tensor语义,新增负向UT。 - MulNoNan golden使用Torch完成物理dtype舍入,TensorFlow TestSpec增加FP64组合数学参考,覆盖TF CPU不支持的合法六维广播及CANN原有INT32输入域;示例支持--device-id=N,新增8条小shape仓内ST。 - 仓内ST合计4份CSV、24条,三个算子各8条。不同表头分开,相同表头在所属算子内合并;最大单Tensor约112KiB,未把GiB压力shape放入默认ST。外部测例仓库未改。 原AddV2/TensorRedirect的19个文件保持原内容,MulNoNan的8个文件完整导入,无冲突。AddV2看板中旧A2实验材料继续按来源分类,不混作A5修复;MulNoNan保留原A2/A3产品支持,不新增平台适配。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4378 - https://gitcode.com/cann/ops-math/issues/4387 ## 测试 先cherry-pick源提交,再squash为1提交;同一原始基点的完整binary diff及Git tree均不变。随后一次rebase到当次从官方主仓获取的master 58e411acd306ae5d391301bf2e21d25d1bf4fae5,27个文件内容均保持,相关算子/公共依赖无主线增量。最终受测提交为af1eeea72c5c773ed3fb136d9ea75d3228b9d90d。 | 验证 | 本轮结果 | |---|---| | 指定本地CI | /workspace/CI-skills/ci_local_check.sh完整通过;A5 ascend950,并发2;27文件pre-commit、隔离OAT、链接/SKIP契约及golden语法检查PASS | | 构建/UT | 三份GEIR示例syntax-only、三算子定向包及package/Host loader GE依赖检查PASS;Host UT 151/151、Graph UT 6/6、TensorRedirect CPU Kernel UT 2/2。API阶段0例,不计实际UT通过 | | 运行包来源 | 安装本轮CI生成的标准.run,177个payload文件SHA256全部一致,含17个预编译对象及三个算子注册信息;未使用旧包冒充本轮构建 | | 组合仓内ST | 三算子24/24 binary Kernel通过,全部BINARY_MATCH;MulNoNan另8/8 static Kernel及8/8 GEIR数值通过,共40次执行 | | 原修复证据 | AddV2/TensorRedirect前期128条NPU正向、两份C++示例实机完整输出/文件失败路径分别保留,不与本轮执行次数直接累加;MulNoNan原PR更广的历史验证在源PR记录,本轮不冒称重跑 | 实机Ascend950PR_9579/device0,使用当前任务独立CANN_Revise 9.3.0和干净的任务TTK 5a7337679b3a4a1cf8a1346392adc9a65cfd378f;每次TTK显式--pc=1,golden来自各算子代码仓。 本地缺GPU/XPU端点,命令显式--compare binary比较导入后的CPU golden;有限值按binary_equal核对,TTK对双方NaN位置一致的元素判相等,不宣称NaN payload逐位一致或默认GPU cross_check已通过。GEIR是数值验证,不当作独立运行时rank元数据dump或全部清理故障路径验证。本轮仅A5实机/CI,源PR已有其他产品证据不作为本轮新增测试。MulNoNan直接Kernel 0D在线编译问题、性能、完整L0/L1及全部资源故障均不在此次合并的通过结论中。已向同一受测SHA提交[compile触发线上CI](https://gitcode.com/cann/ops-math/merge_requests/6947#note_197811371);[线上流水线](https://gitcode.com/CANN/ops-math/actions/runs/42aadc4ec89646c2888de81d318470cb)已启动,结果待出,不由本地通过推断。 ## 文档更新 - AddV2/TensorRedirect继续保留所有原产品能力,按用户指引保留格式整改和删除冗余范围声明;没有重新添加当前源码/实测平台范围提示。 - MulNoNan README完整保留源PR内容:全局rank8及动态rank运行时上限表述、产品差异列表和必要设备选择参数;保留原A2/A3支持,不因内部TestSpec增加用户接口声明。 - 组合提交的来源、测试范围及限制写入本PR与任务独立验证记录。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:合并MulNoNan测试参考/负向UT及小型ST See merge request: cann/ops-math!6947 | 7 days ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !7113 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共409个文件):第一批(已合入)之外的其余全部译稿,覆盖conversion、examples、ge、math、random各类算子README译稿,以及CHANGELOG_en.md、.gitcode PR模板英文版等。 本批内全部仓内链接均指向master已有文件(含第一批已合入的21+2篇译稿),合入后本仓432篇英文文档全部就位,链接完整生效。 本批同时包含4篇基于最新源文档的增量更新(math/ada_cast、math/prod_force_se_a、math/sinkhorn、math/xlogy,对应上游近期文档变更)。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(本批全部相对链接仅指向master已有文件,无指向本PR外未提交文件的链接),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增409个英文译稿文件(*_en.md / .en-US.md),不修改任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7113 | 5 days ago |
TensorRedirect
English | 简体中文
Product Support Status
| Product | Supported |
|---|---|
| Ascend 950PR&950DT products | √ |
| Atlas A3 products | √ |
| Atlas A2 products | √ |
| Atlas 200I/500 A2 inference products | √ |
| Atlas inference products | √ |
| Atlas training products | √ |
Function Description
-
Operator function: passes the values of the input tensor
xto the output tensoroutput_x. The output has the same data type and shape as the input. This operator is used in graph optimization or reference redirection scenarios, and performs no type conversion, broadcasting, or data layout transformation. -
Computation formula:
(output_x)i=xi(\mathrm{output\_x})_i=x_i (output_x)i=xi
where iii traverses all elements of xxx.
Parameter Description
| Parameter Name | Input/Output/Attribute | Description | Data Type | Data Format |
|---|---|---|---|---|
| x | Input | Input tensor whose values need to be passed. | FLOAT, FLOAT16, BFLOAT16, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64 | ND |
| output_x | Output | Tensor for the pass-through result. The data type, shape, and data format are all the same as those of x. | FLOAT, FLOAT16, BFLOAT16, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64 | ND |
Constraint Description
- No in-place invocation API is provided.
- Ascend 950PR&950DT products:
- All data types listed in the Parameter Description are supported.
- Both static shape and dynamic shape support input ND→output ND. Dynamic shape supports fixed rank and dynamic rank.
- The value range of rank is [0,8]. A rank of 0 indicates a scalar. Empty tensors are supported.
- In a graph inference shape,
-1indicates an unknown dimension, and{-2}indicates an unknown rank. During actual execution, each dimension of the input tensor must be a specific non-negative integer.
- Atlas A3 products, Atlas A2 products, Atlas 200I/500 A2 inference products, Atlas inference products, Atlas training products:
- BFLOAT16 is not supported, and the other data types are the same as those in the Parameter Description.
- Static shape supports input ND→output ND. Dynamic shape is not supported.
- The value range of rank is [1,8]. Empty tensors are not supported.
Invocation Description
| Invocation Method | Invocation Sample | Description |
|---|---|---|
| GE graph mode | test_geir_tensor_redirect | Invokes the TensorRedirect operator by building a graph through the operator IR. |
This operator does not provide an ACLNN API with the same name, and supports only the GE graph-mode invocation in the preceding table.