| Files | Last commit | Last update |
|---|---|---|
docs: [maximum_grad/minimum_grad] 新增算子 README 说明文档及融合规则资料 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6741 merge mm into master docs: [maximum_grad/minimum_grad] 新增算子 README 说明文档及融合规则资料 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 为 maximum_grad / minimum_grad 算子补充说明文档,具体包括: 1. **新增算子 README**(math/maximum_grad/README.md、math/minimum_grad/README.md),内容覆盖: - 产品支持情况:Ascend 950PR&950DT、Atlas A3、Atlas A2、Atlas 200I/500 A2、Atlas 推理/训练系列; - 功能说明与计算公式:MaximumGrad 为 maximum 的反向梯度算子,y1 = grads × (x1 ≥ x2),y2 = grads × (x1 < x2);MinimumGrad 为 minimum 的反向梯度算子,y1 = grads × (x1 ≤ x2),y2 = grads × (x1 > x2); - 参数说明:输入 grads/x1/x2,输出 y1/y2,支持 FLOAT16/FLOAT/BF16/INT32(ND 格式),可选属性 grad_x/grad_y(BOOL,默认 true); - 约束说明:输入 shape 须满足 broadcast 规则(输出 shape 为 broadcast 后的结果)、BF16 仅 Ascend 950PR&950DT 系列产品支持、grad_x 与 grad_y 不能同时为 false; - 调用说明:图模式调用样例(examples/arch35/test_geir_*.cpp,通过算子 IR 构图方式调用)。 2. **新增融合规则资料**(math/maximum_grad/docs/MaximumMinimumGradFusionPass.md 及配图 docs/zh/figures/MaximumMinimumGradFusionPass.png):说明 TensorFlow 自动求导分解出的 Maximum/Minimum 梯度子图(GreaterEqual/LessEqual + Select/SelectV2)替换为 MaximumGrad/MinimumGrad 算子的融合模式、使用约束(输入 dtype 一致且仅支持 float16/float32/bf16/int32、zeros 须为全零常量节点、GE 编译器版本不低于 9.0.0)及支持型号。 3. **更新算子列表**(docs/zh/op_list.md):新增 maximum_grad、minimum_grad 条目及功能描述,并链接至对应 README。 ## 关联的Issue - #4174 ## 测试 - 纯文档变更,无代码逻辑改动,不涉及二级冒烟、算子泛化等测试。 - 已校验文档中引用的文件均真实存在:examples/arch35/test_geir_maximum_grad.cpp、op_graph/maximum_grad_proto.h(minimum_grad 对应文件同)。 ## 文档更新 - 新增 math/maximum_grad/README.md、math/minimum_grad/README.md - 新增 math/maximum_grad/docs/MaximumMinimumGradFusionPass.md、docs/zh/figures/MaximumMinimumGradFusionPass.png - 更新 docs/zh/op_list.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6741 | 12 days ago | |
feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6632 merge 1030 into master feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 ### 改动原因 Ascend950(arch35)系列需要原生支持 MaximumGrad/MinimumGrad(elementwise maximum/minimum 的反向梯度算子,兼容 TensorFlow MaximumGrad/MinimumGrad)。TF 反向图中该梯度被分解为 GreaterEqual/LessEqual + Select/SelectV2 + 常量 zeros 的多算子子图,执行效率低,需要提供单一融合算子承接。 ### 改动方法 新增 math/maximum_grad、math/minimum_grad 两个算子工程(40 个文件,+4979 行): **算子规格**:输入 grads/x1/x2(float16/float32/bfloat16/int32,ND,三输入 dtype 必须一致);输出 y1/y2(broadcast 后 shape);属性 grad_x/grad_y(bool,默认 true,不能同时为 false);AICore 配置 ascend950,支持动态编译静态化、动态 rank、动态 shape。 **Host 侧**:op_def 注册 + proto(TF 兼容);infershape 三输入 broadcast 推导(两输出均为 broadcast shape,校验空 tensor/属性合法性);InferDataType 迁移至 op_graph(4 dtype 白名单 + 跨输入一致性校验);arch35 tiling 基于 atvoss broadcast tiling;ascend950 binary 配置 4 dtype × 3 输出形态(y1_only/y2_only/both)共 12 个/算子。 **Kernel 侧**:arch35 AIV only,基于 atvoss BroadcastSch 调度 + DAG 描述,按 outputCount 模板实例化三种输出形态。 **融合规则 MaximumMinimumGradFusionPass**(maximum/minimum 共用):将 TF 分解梯度子图(GE/LE + Select/SelectV2 + zeros,5→2)融合为单一算子;支持 both/dx-only/dy-only 三种形态,单形态要求子图边界自包含(self-contained)防误匹配;基于 GE 9.0.0 pattern 框架,编译期宏 + 运行时版本双重保护(低于 9.0.0 不注册),≥9.0.0 走 AfterInferShape。 canndev 侧配套改动:https://gitcode.com/cann/canndev/pull/82627 ## 关联的Issue - #3966 ## 测试 - UT:infershape / tiling(arch35) / graph_infer / fusion_pass(含 Select 与 SelectV2、GradientTape 命名、dx-only/dy-only 正例,平台不支持、scope 不匹配、zeros 非全零、端口交换等负例) - E2E:tests/assets golden 基准 + maximum_grad_e2e.py / minimum_grad_e2e.py(tensorflow 命名空间挂载) - GEIR 示例:examples/arch35/test_geir_maximum_grad.cpp、test_geir_minimum_grad.cpp ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6632 | 14 days ago | |
feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6632 merge 1030 into master feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 ### 改动原因 Ascend950(arch35)系列需要原生支持 MaximumGrad/MinimumGrad(elementwise maximum/minimum 的反向梯度算子,兼容 TensorFlow MaximumGrad/MinimumGrad)。TF 反向图中该梯度被分解为 GreaterEqual/LessEqual + Select/SelectV2 + 常量 zeros 的多算子子图,执行效率低,需要提供单一融合算子承接。 ### 改动方法 新增 math/maximum_grad、math/minimum_grad 两个算子工程(40 个文件,+4979 行): **算子规格**:输入 grads/x1/x2(float16/float32/bfloat16/int32,ND,三输入 dtype 必须一致);输出 y1/y2(broadcast 后 shape);属性 grad_x/grad_y(bool,默认 true,不能同时为 false);AICore 配置 ascend950,支持动态编译静态化、动态 rank、动态 shape。 **Host 侧**:op_def 注册 + proto(TF 兼容);infershape 三输入 broadcast 推导(两输出均为 broadcast shape,校验空 tensor/属性合法性);InferDataType 迁移至 op_graph(4 dtype 白名单 + 跨输入一致性校验);arch35 tiling 基于 atvoss broadcast tiling;ascend950 binary 配置 4 dtype × 3 输出形态(y1_only/y2_only/both)共 12 个/算子。 **Kernel 侧**:arch35 AIV only,基于 atvoss BroadcastSch 调度 + DAG 描述,按 outputCount 模板实例化三种输出形态。 **融合规则 MaximumMinimumGradFusionPass**(maximum/minimum 共用):将 TF 分解梯度子图(GE/LE + Select/SelectV2 + zeros,5→2)融合为单一算子;支持 both/dx-only/dy-only 三种形态,单形态要求子图边界自包含(self-contained)防误匹配;基于 GE 9.0.0 pattern 框架,编译期宏 + 运行时版本双重保护(低于 9.0.0 不注册),≥9.0.0 走 AfterInferShape。 canndev 侧配套改动:https://gitcode.com/cann/canndev/pull/82627 ## 关联的Issue - #3966 ## 测试 - UT:infershape / tiling(arch35) / graph_infer / fusion_pass(含 Select 与 SelectV2、GradientTape 命名、dx-only/dy-only 正例,平台不支持、scope 不匹配、zeros 非全零、端口交换等负例) - E2E:tests/assets golden 基准 + maximum_grad_e2e.py / minimum_grad_e2e.py(tensorflow 命名空间挂载) - GEIR 示例:examples/arch35/test_geir_maximum_grad.cpp、test_geir_minimum_grad.cpp ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6632 | 14 days ago | |
feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6632 merge 1030 into master feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 ### 改动原因 Ascend950(arch35)系列需要原生支持 MaximumGrad/MinimumGrad(elementwise maximum/minimum 的反向梯度算子,兼容 TensorFlow MaximumGrad/MinimumGrad)。TF 反向图中该梯度被分解为 GreaterEqual/LessEqual + Select/SelectV2 + 常量 zeros 的多算子子图,执行效率低,需要提供单一融合算子承接。 ### 改动方法 新增 math/maximum_grad、math/minimum_grad 两个算子工程(40 个文件,+4979 行): **算子规格**:输入 grads/x1/x2(float16/float32/bfloat16/int32,ND,三输入 dtype 必须一致);输出 y1/y2(broadcast 后 shape);属性 grad_x/grad_y(bool,默认 true,不能同时为 false);AICore 配置 ascend950,支持动态编译静态化、动态 rank、动态 shape。 **Host 侧**:op_def 注册 + proto(TF 兼容);infershape 三输入 broadcast 推导(两输出均为 broadcast shape,校验空 tensor/属性合法性);InferDataType 迁移至 op_graph(4 dtype 白名单 + 跨输入一致性校验);arch35 tiling 基于 atvoss broadcast tiling;ascend950 binary 配置 4 dtype × 3 输出形态(y1_only/y2_only/both)共 12 个/算子。 **Kernel 侧**:arch35 AIV only,基于 atvoss BroadcastSch 调度 + DAG 描述,按 outputCount 模板实例化三种输出形态。 **融合规则 MaximumMinimumGradFusionPass**(maximum/minimum 共用):将 TF 分解梯度子图(GE/LE + Select/SelectV2 + zeros,5→2)融合为单一算子;支持 both/dx-only/dy-only 三种形态,单形态要求子图边界自包含(self-contained)防误匹配;基于 GE 9.0.0 pattern 框架,编译期宏 + 运行时版本双重保护(低于 9.0.0 不注册),≥9.0.0 走 AfterInferShape。 canndev 侧配套改动:https://gitcode.com/cann/canndev/pull/82627 ## 关联的Issue - #3966 ## 测试 - UT:infershape / tiling(arch35) / graph_infer / fusion_pass(含 Select 与 SelectV2、GradientTape 命名、dx-only/dy-only 正例,平台不支持、scope 不匹配、zeros 非全零、端口交换等负例) - E2E:tests/assets golden 基准 + maximum_grad_e2e.py / minimum_grad_e2e.py(tensorflow 命名空间挂载) - GEIR 示例:examples/arch35/test_geir_maximum_grad.cpp、test_geir_minimum_grad.cpp ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6632 | 14 days ago | |
feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6632 merge 1030 into master feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 ### 改动原因 Ascend950(arch35)系列需要原生支持 MaximumGrad/MinimumGrad(elementwise maximum/minimum 的反向梯度算子,兼容 TensorFlow MaximumGrad/MinimumGrad)。TF 反向图中该梯度被分解为 GreaterEqual/LessEqual + Select/SelectV2 + 常量 zeros 的多算子子图,执行效率低,需要提供单一融合算子承接。 ### 改动方法 新增 math/maximum_grad、math/minimum_grad 两个算子工程(40 个文件,+4979 行): **算子规格**:输入 grads/x1/x2(float16/float32/bfloat16/int32,ND,三输入 dtype 必须一致);输出 y1/y2(broadcast 后 shape);属性 grad_x/grad_y(bool,默认 true,不能同时为 false);AICore 配置 ascend950,支持动态编译静态化、动态 rank、动态 shape。 **Host 侧**:op_def 注册 + proto(TF 兼容);infershape 三输入 broadcast 推导(两输出均为 broadcast shape,校验空 tensor/属性合法性);InferDataType 迁移至 op_graph(4 dtype 白名单 + 跨输入一致性校验);arch35 tiling 基于 atvoss broadcast tiling;ascend950 binary 配置 4 dtype × 3 输出形态(y1_only/y2_only/both)共 12 个/算子。 **Kernel 侧**:arch35 AIV only,基于 atvoss BroadcastSch 调度 + DAG 描述,按 outputCount 模板实例化三种输出形态。 **融合规则 MaximumMinimumGradFusionPass**(maximum/minimum 共用):将 TF 分解梯度子图(GE/LE + Select/SelectV2 + zeros,5→2)融合为单一算子;支持 both/dx-only/dy-only 三种形态,单形态要求子图边界自包含(self-contained)防误匹配;基于 GE 9.0.0 pattern 框架,编译期宏 + 运行时版本双重保护(低于 9.0.0 不注册),≥9.0.0 走 AfterInferShape。 canndev 侧配套改动:https://gitcode.com/cann/canndev/pull/82627 ## 关联的Issue - #3966 ## 测试 - UT:infershape / tiling(arch35) / graph_infer / fusion_pass(含 Select 与 SelectV2、GradientTape 命名、dx-only/dy-only 正例,平台不支持、scope 不匹配、zeros 非全零、端口交换等负例) - E2E:tests/assets golden 基准 + maximum_grad_e2e.py / minimum_grad_e2e.py(tensorflow 命名空间挂载) - GEIR 示例:examples/arch35/test_geir_maximum_grad.cpp、test_geir_minimum_grad.cpp ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6632 | 14 days ago | |
fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6802 merge mm into master fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 修正 maximum_grad / minimum_grad 测试资产(tests/assets/golden.py 三方标杆与 *_e2e.py e2e 通路)中浮点反向的实现与计时口径。 ### 改动原因 - 旧实现浮点路径每次调用裸起 tf.GradientTape,前向(maximum/minimum 与 Mul)随反向一同进入执行与计时窗口,GPU 三方标杆采集的 device_us 并非纯反向耗时,与 NPU 侧 e2e 通路口径不对称。 - 旧 e2e 实现为规避 npu_device 动态图 GE 会话模型缓存按算子节点名复用导致的常量串台问题,每次调用都以唯一 name_scope 强制 graph_id 错开,代价是每次调用重新编译,同签名用例无法共享已编译图。 ### 改动方法 - **golden.py(三方标杆)**:浮点路径改为 tf.function 包裹的 tape 反向,只返回梯度,前向为死代码被剪除,计时窗口纯反向;int32 无梯度定义,抽出手拼分支(GreaterEqual/LessEqual + SelectV2×2 + Sum,与 golden 同口径)。 - **\*_e2e.py(e2e 通路)**:浮点路径改为 tf.function 包裹的 tape 反向且只返回梯度,NPU 执行纯反向链(融合后 te_maximumgrad/te_minimumgrad + te_reducesum),与 GPU 侧标杆口径对称;tf.function 按 (shape,dtype) 签名缓存 concrete function,同签名共享编译图(输入为 placeholder,无常量串台),跨签名 trace 时以 _TRACE_SEQ 唯一化 name_scope 错开 graph_id;int32 保留手拼路径。 - numpy golden(kernel/geir 通路 oracle)与精度判据(binary_equal、三比值)不变;融合规则的 gradient_tape scope 检查按名字分段匹配,前缀不影响。 ## 关联的Issue - #4204 ## 测试 - 变更仅涉及 tests/assets 测试资产,不改动算子实现(op_host/op_kernel/op_graph)。 - 验证方式:复用进程批跑 maximum_grad / minimum_grad 的 e2e 用例,确认浮点 golden 三比值 cross_check 通过、int32 binary_equal 通过、device_us 采集正常且同签名用例不重复触发编译。 ## 文档更新 - 无(不涉及 README / docs 变更)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6802 | 11 days ago | |
feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6632 merge 1030 into master feat: 新增Ascend950系列MaximumGrad、MinimumGrad算子实现 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 ### 改动原因 Ascend950(arch35)系列需要原生支持 MaximumGrad/MinimumGrad(elementwise maximum/minimum 的反向梯度算子,兼容 TensorFlow MaximumGrad/MinimumGrad)。TF 反向图中该梯度被分解为 GreaterEqual/LessEqual + Select/SelectV2 + 常量 zeros 的多算子子图,执行效率低,需要提供单一融合算子承接。 ### 改动方法 新增 math/maximum_grad、math/minimum_grad 两个算子工程(40 个文件,+4979 行): **算子规格**:输入 grads/x1/x2(float16/float32/bfloat16/int32,ND,三输入 dtype 必须一致);输出 y1/y2(broadcast 后 shape);属性 grad_x/grad_y(bool,默认 true,不能同时为 false);AICore 配置 ascend950,支持动态编译静态化、动态 rank、动态 shape。 **Host 侧**:op_def 注册 + proto(TF 兼容);infershape 三输入 broadcast 推导(两输出均为 broadcast shape,校验空 tensor/属性合法性);InferDataType 迁移至 op_graph(4 dtype 白名单 + 跨输入一致性校验);arch35 tiling 基于 atvoss broadcast tiling;ascend950 binary 配置 4 dtype × 3 输出形态(y1_only/y2_only/both)共 12 个/算子。 **Kernel 侧**:arch35 AIV only,基于 atvoss BroadcastSch 调度 + DAG 描述,按 outputCount 模板实例化三种输出形态。 **融合规则 MaximumMinimumGradFusionPass**(maximum/minimum 共用):将 TF 分解梯度子图(GE/LE + Select/SelectV2 + zeros,5→2)融合为单一算子;支持 both/dx-only/dy-only 三种形态,单形态要求子图边界自包含(self-contained)防误匹配;基于 GE 9.0.0 pattern 框架,编译期宏 + 运行时版本双重保护(低于 9.0.0 不注册),≥9.0.0 走 AfterInferShape。 canndev 侧配套改动:https://gitcode.com/cann/canndev/pull/82627 ## 关联的Issue - #3966 ## 测试 - UT:infershape / tiling(arch35) / graph_infer / fusion_pass(含 Select 与 SelectV2、GradientTape 命名、dx-only/dy-only 正例,平台不支持、scope 不匹配、zeros 非全零、端口交换等负例) - E2E:tests/assets golden 基准 + maximum_grad_e2e.py / minimum_grad_e2e.py(tensorflow 命名空间挂载) - GEIR 示例:examples/arch35/test_geir_maximum_grad.cpp、test_geir_minimum_grad.cpp ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6632 | 14 days ago | |
docs: [maximum_grad/minimum_grad] 新增算子 README 说明文档及融合规则资料 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6741 merge mm into master docs: [maximum_grad/minimum_grad] 新增算子 README 说明文档及融合规则资料 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 为 maximum_grad / minimum_grad 算子补充说明文档,具体包括: 1. **新增算子 README**(math/maximum_grad/README.md、math/minimum_grad/README.md),内容覆盖: - 产品支持情况:Ascend 950PR&950DT、Atlas A3、Atlas A2、Atlas 200I/500 A2、Atlas 推理/训练系列; - 功能说明与计算公式:MaximumGrad 为 maximum 的反向梯度算子,y1 = grads × (x1 ≥ x2),y2 = grads × (x1 < x2);MinimumGrad 为 minimum 的反向梯度算子,y1 = grads × (x1 ≤ x2),y2 = grads × (x1 > x2); - 参数说明:输入 grads/x1/x2,输出 y1/y2,支持 FLOAT16/FLOAT/BF16/INT32(ND 格式),可选属性 grad_x/grad_y(BOOL,默认 true); - 约束说明:输入 shape 须满足 broadcast 规则(输出 shape 为 broadcast 后的结果)、BF16 仅 Ascend 950PR&950DT 系列产品支持、grad_x 与 grad_y 不能同时为 false; - 调用说明:图模式调用样例(examples/arch35/test_geir_*.cpp,通过算子 IR 构图方式调用)。 2. **新增融合规则资料**(math/maximum_grad/docs/MaximumMinimumGradFusionPass.md 及配图 docs/zh/figures/MaximumMinimumGradFusionPass.png):说明 TensorFlow 自动求导分解出的 Maximum/Minimum 梯度子图(GreaterEqual/LessEqual + Select/SelectV2)替换为 MaximumGrad/MinimumGrad 算子的融合模式、使用约束(输入 dtype 一致且仅支持 float16/float32/bf16/int32、zeros 须为全零常量节点、GE 编译器版本不低于 9.0.0)及支持型号。 3. **更新算子列表**(docs/zh/op_list.md):新增 maximum_grad、minimum_grad 条目及功能描述,并链接至对应 README。 ## 关联的Issue - #4174 ## 测试 - 纯文档变更,无代码逻辑改动,不涉及二级冒烟、算子泛化等测试。 - 已校验文档中引用的文件均真实存在:examples/arch35/test_geir_maximum_grad.cpp、op_graph/maximum_grad_proto.h(minimum_grad 对应文件同)。 ## 文档更新 - 新增 math/maximum_grad/README.md、math/minimum_grad/README.md - 新增 math/maximum_grad/docs/MaximumMinimumGradFusionPass.md、docs/zh/figures/MaximumMinimumGradFusionPass.png - 更新 docs/zh/op_list.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6741 | 12 days ago |
MaximumGrad
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
- 算子功能:MaximumGrad 是
maximum算子的反向梯度计算算子,计算前向传播输出对两个输入 x1、x2 的梯度。 - 计算公式:
y1=grads×(x1≥x2)y1 = grads \times (x1 \geq x2) y1=grads×(x1≥x2)
y2=grads×(x1<x2)y2 = grads \times (x1 < x2) y2=grads×(x1<x2)
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| grads | 输入 | 梯度输入,表示对 maximum 前向输出 y 的梯度,公式中的 grads。 |
FLOAT16、FLOAT、BF16、INT32 | ND |
| x1 | 输入 | 前向传播的第一个输入,公式中的 x1。 |
FLOAT16、FLOAT、BF16、INT32 | ND |
| x2 | 输入 | 前向传播的第二个输入,公式中的 x2。 |
FLOAT16、FLOAT、BF16、INT32 | ND |
| y1 | 输出 | 对 x1 的梯度,公式中的 y1。 |
FLOAT16、FLOAT、BF16、INT32 | ND |
| y2 | 输出 | 对 x2 的梯度,公式中的 y2。 |
FLOAT16、FLOAT、BF16、INT32 | ND |
| grad_x | 可选属性 | 是否计算并输出 y1,默认值 true。 |
BOOL | - |
| grad_y | 可选属性 | 是否计算并输出 y2,默认值 true。 |
BOOL | - |
约束说明
- 输入
grads、x1、x2三者的 shape 须满足 broadcast 规则。 - 输出
y1、y2的 shape 为grads、x1、x2broadcast 之后的 shape。 - 数据类型 BF16 仅 Ascend 950PR&950DT 系列产品支持。
- 属性
grad_x与grad_y不能同时为false。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_maximum_grad | 通过算子IR构图方式调用MaximumGrad算子。 |