| Files | Last commit | Last update |
|---|---|---|
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 | 20 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 | 20 days ago | |
fix: 修复AddV2和TensorRedirect误校验OriginShape Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !5884 merge fix/add-v2-scalar-origin-rank into master fix: 修复AddV2和TensorRedirect误校验OriginShape Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 本 PR 修复 Ascend 950PR/Ascend 950DT(arch35)实现中 AddV2 和 TensorRedirect 对 OriginShape 进行 Tiling rank 校验而误拒绝合法输入的问题。 ### 问题场景 - TensorFlow 场景 tf.add(x, 1) 中,常量 1 的框架逻辑形态(OriginShape)是 []、rank 为 0;GE 运行时可将其规整为单元素存储形态(StorageShape)[1]。原实现同时按 [1, 8] 校验 OriginShape 和 StorageShape,导致合法标量广播在进入 Tiling 时失败。 - TensorRedirect 也存在同类问题:OriginShape 描述框架逻辑形态,StorageShape 才是 Tiling 和 Kernel 实际使用的计算形态;对 OriginShape 再做一遍 rank 限制会误伤合法的 shape 转换场景。 - StorageShape 本身为 rank 0 时表示单元素标量,元素个数为 1;原校验将其按 rank 下界 1 拒绝,与同类算子的标量处理不一致。 ### 修复方案 - AddV2、TensorRedirect 均不再在 Tiling 中单独校验 OriginShape,仅校验实际参与切分和计算的 StorageShape。 - 两个算子的 StorageShape rank 范围统一为 [0, 8],保留 rank 上界、负维、shape/广播关系、dtype、元素个数溢出等既有校验。 - AddV2 的 rank-0 StorageShape 在进入 ATVOSS Broadcast 模板后,由 EnsureNotScalar 以等价的 [1] 形态参与合轴和切分;该函数不修改 OriginShape 或 TilingContext 中的原始 StorageShape。 - 补充 origin/storage 不一致、TF 标量、rank-0 storage 标量及标量广播回归用例。该修复由 TensorFlow 标量场景暴露,但校验原则不限定于 TensorFlow。 ### 文件修改 - conversion/tensor_redirect/op_host/arch35/tensor_redirect_tiling_arch35.cpp:删除输入/输出 OriginShape rank 校验;StorageShape 支持 rank 0,继续校验 rank 上界、非负维和输入输出 storage shape 一致性。 - conversion/tensor_redirect/tests/ut/op_host/arch35/test_tensor_redirect_tiling_arch35.cpp:将 rank-0 StorageShape 改为成功用例,补充输入/输出 OriginShape 与 StorageShape rank 不一致的成功回归用例。 - math/add_v2/README.md:将 Ascend 950PR/Ascend 950DT 的 rank 范围更新为 [0, 8],说明 rank 0 表示标量。 - math/add_v2/op_host/arch35/add_v2_tiling_arch35.cpp:删除 x1、x2、y 的 OriginShape rank 校验;StorageShape 支持 rank 0,并继续执行实际 shape、广播及溢出校验。 - math/add_v2/tests/ut/op_host/arch35/test_add_v2_tiling.cpp:补充 TF 标量位于左右输入、标量与标量、rank-0 StorageShape 及其广播、OriginShape 不参与 Tiling rank 校验等用例。 ## 关联的Issue - 历史质量加固 Issue:https://gitcode.com/cann/ops-math/issues/3195。本 PR 修复该轮加固后暴露的标量 shape 校验回归。 ## 测试 - 使用工作目录 CANN:/workspace/July-Changwei-math/Ascend/cann-9.2.0。 - 分支已 rebase 到 cann/ops-math:master@968d685af5c6c5d95f207eb73126cca9b90745ee,并 squash 为 1 个提交:75d3c5deb29740b61560d09125aa05be424a6226。 - 定向 Host UT:AddV2 37 个、TensorRedirect 55 个,共 92/92 通过。 - 最新定向本地 CI(固定上述 master 快照、-j8)全部通过: - pre-commit:PASS; - 隔离 oat-py==1.0.3 一次检查完整 5 个变更文件:PASS; - README Markdown 链接:PASS; - Ascend 950:AddV2、TensorRedirect 定向 package 与 ophost UT:PASS; - Ascend 910B:AddV2、TensorRedirect 定向 package 与 ophost UT:PASS。 ## 文档更新 - 已更新 math/add_v2/README.md 中 Ascend 950PR/Ascend 950DT 的 rank-0 标量说明。 - TensorRedirect 的公开逻辑 rank 规格未在本 PR 中改动;本次只修正 Tiling 对实际 StorageShape 的校验对象与标量处理。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5884 | 1 month 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(golden): 规范 AddV2、MulNoNan 和 TensorRedirect 三腿参考 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !6247 merge fix/golden-three-leg-contract-20261012 into master fix(golden): 规范 AddV2、MulNoNan 和 TensorRedirect 三腿参考 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修正 AddV2、MulNoNan、TensorRedirect 的 Golden,使其遵循 TTK 三腿比对与 Golden 编写规范。仅修改 3 个 tests/assets/golden.py。 - CPU Promote 不做输入或输出精度转换;AddV2 的 BF16 桥接改为位视图,普通模式及 GPU 标杆的 FP16/BF16 跟随 kernel 在 FP32 计算后窄回。 - MulNoNan kernel/GEIR 的 CPU Golden 使用 TensorFlow 原生浮点 API,int32 使用 TF 乘法与 Select 组合,保留原有溢出和第二输入为零的掩码语义。 - MulNoNan TF E2E 复用 TTK 默认 CPU 原生 TF 通路及框架 Promote,GPU 标杆改为 Torch,并使用 TF API 的 x/y 形参名适配按名绑定。 - 移除三个算子的 TF GPU provider。TensorRedirect 的计算与逐位拷贝逻辑不变,全部 dtype tolerance 和 legacy 注册保留。 - 算子实现、Host、Parser 和 TTK 均无改动。 ## 关联的Issue Closes #3496 https://gitcode.com/cann/ops-math/issues/3496 ## 测试 - Golden CPU 回归 248/248 通过,基线为 f53b52a3e7deaedca104d82c453c99900de60b25。 - 同一固定输入运行主线和整改版,并用独立参考校验整改结果;覆盖全部声明 dtype、Promote FP32/FP64、广播、标量、非连续和空输入、整数溢出、NaN/Inf 与零。 - TensorRedirect 覆盖 11 种 dtype,逐位检查负零、NaN payload 和非规格化数。 - 使用当前工作目录 TTK 的真实 TestSpec loader、参数绑定和 CPU Golden 模块检查注册、完整 dtype tolerance、MulNoNan TF E2E 的普通及 Promote 默认通路。 - pre-commit run --files <本次3个golden.py>、git diff --check 通过。 - Torch GPU 标杆的 Python 组合在 CPU 执行验证;未执行 NPU/远程 GPU、算子性能或算子精度测试。本轮本地 CI 结果见下文。 预期变化:MulNoNan Promote 的 FP64 乘积不再经过 FP32 舍入;TF E2E 普通模式不再无条件升精度。一般浮点算术的 NaN payload 不作为一致性要求,TensorRedirect 仍严格逐位相等。 ## 文档更新 当前工作目录保留整改报告、主线 Golden 快照、可复现脚本和逐项结果;仓库文档未修改。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 输入输出自查 修复 MulNoNan 在标量输入下返回 NumPy scalar 的兼容问题,使用 np.asarray(output.numpy()) 保持原来的零维 ndarray,不转换 dtype 或改变数值。新增 legacy/Spec 的签名、返回容器、输出数量/顺序/shape/dtype、输入不被改写、Promote 元信息及真实 TTK 服务端 CPU 参数绑定检查。默认 TF E2E 标量输出另经真实 TTK 比对器验证兼容。 两仓累计 Golden CPU 自查 **447/447** 通过,本仓 **248/248**。未执行 NPU/远程 GPU、算子性能或算子精度测试。当前受检 HEAD:2ed0535b23f764e6efbae7ded2d6d5513baa33dc。 ## 本地 CI 统一入口 /workspace/CI-skills/ci_local_check.sh 定向检查通过;pre-commit、隔离 oat-py 1.0.3、Ascend 950 与 A2(ascend910b)定向 package/UT 已通过。构建并行度最多 8,使用任务目录内 CANN_Revise 的 0923 Toolkit/ops。 受测 HEAD:2ed0535b23f764e6efbae7ded2d6d5513baa33dc;rebase 主仓 master:f53b52a3e7deaedca104d82c453c99900de60b25;本轮 CI 基线快照:f53b52a3e7deaedca104d82c453c99900de60b25。每仓相对 rebase 基点仅 1 个提交,squash 前后完整 diff 和 tree 一致,7 个 Golden 内容不变。 覆盖边界:下列定向 UT 阶段未执行用例(0 项或仅构建目标):opapi/ascend950、opgraph/ascend950、opapi/ascend910b、opgraph/ascend910b、opkernel/ascend910b。不将这些阶段的构建通过计为用例覆盖。 线上 CI 触发凭据:https://gitcode.com/cann/ops-math/merge_requests/6247#note_193365306。仅记录已触发请求/现有任务,不表示线上 CI 已通过。 See merge request: cann/ops-math!6247 | 1 month 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: 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 | 20 days ago |
TensorRedirect
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:将输入张量
x的值传递到输出张量output_x,输出与输入的数据类型和shape一致。本算子用于图优化或引用重定向场景,不做类型转换、广播或数据布局变换。 -
计算公式:
(output_x)i=xi(\mathrm{output\_x})_i=x_i (output_x)i=xi
其中 iii 遍历 xxx 的全部元素。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 需要传递的输入张量。 | FLOAT、FLOAT16、BFLOAT16、INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64 | ND |
| output_x | 输出 | 传递结果张量。数据类型、shape和数据格式均与x一致。 | FLOAT、FLOAT16、BFLOAT16、INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64 | ND |
产品差异说明
| 产品 | 数据类型 | 静态shape能力 | 动态shape能力 | shape/rank及空Tensor限制 |
|---|---|---|---|---|
| Ascend 950PR&950DT系列产品 | FLOAT、FLOAT16、BFLOAT16、INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64 | 输入ND→输出ND | 输入ND→输出ND;支持固定rank动态shape和dynamic rank | rank取值范围为[0, 8],rank为0时表示标量;支持空Tensor |
| Atlas A3系列产品 Atlas A2系列产品 Atlas 200I/500 A2推理产品 Atlas推理系列产品 Atlas训练系列产品 |
FLOAT、FLOAT16、INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64 | 输入ND→输出ND | 不支持动态shape | rank取值范围为[1, 8];不支持空Tensor |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| GE图模式 | test_geir_tensor_redirect | 通过算子IR构图方式调用TensorRedirect算子。 |
本算子不提供同名aclnn接口,仅支持上表的GE图模式调用。