CANN Maximum算子描述
2026/5/9 22:21:06 网站建设 项目流程

Maximum 算子 API 描述

【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台,推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench

1. 算子简介

返回两个输入张量中的最大值,支持广播。

主要应用场景

  • ReLU 激活函数实现(与零取最大值)
  • 梯度裁剪中的阈值限制
  • 多路径特征融合中的逐元素最大值选择
  • 数值计算中的下界约束

算子特征

  • 难度等级:L2(Broadcast)
  • 双输入单输出,逐元素运算,输入支持广播

2. 算子定义

数学公式

$$ y = \max(x_1, x_2) $$

逐元素比较 $x_1$ 和 $x_2$,返回每个位置上的较大值。

3. 接口规范

算子原型

cann_bench.maximum(Tensor x1, Tensor x2) -> Tensor y

输入参数说明

参数类型默认值描述
x1Tensor必选第1个输入张量
x2Tensor必选第2个输入张量

输出

参数Shapedtype描述
y广播后的 shape与输入一致输出张量,两个输入中的最大值

数据类型

输入 dtype输出 dtype
bfloat16bfloat16
float16float16
float32float32
int8int8
int32int32
int64int64

规则与约束

  • 两个输入张量的 shape 需满足广播规则,输出 shape 为广播后的 shape
  • 两个输入张量的 dtype 必须一致
  • 支持浮点类型(bfloat16、float16、float32)、整数类型(int8、int32、int64)及布尔类型
  • 当输入包含 NaN 时,行为与 PyTorch torch.maximum 一致(NaN 会传播)
  • 当输入包含 inf/-inf 时,按正常数值比较规则处理

4. 精度要求

采用生态算子精度标准进行验证。

误差指标

  1. 平均相对误差(MERE):采样点中相对误差平均值

    $$ \text{MERE} = \text{avg}(\frac{\text{abs}(actual - golden)}{\text{abs}(golden)+\text{1e-7}}) $$

  2. 最大相对误差(MARE):采样点中相对误差最大值

    $$ \text{MARE} = \max(\frac{\text{abs}(actual - golden)}{\text{abs}(golden)+\text{1e-7}}) $$

通过标准

数据类型FLOAT16BFLOAT16FLOAT32HiFLOAT32FLOAT8 E4M3FLOAT8 E5M2
通过阈值(Threshold)2^-102^-72^-132^-112^-32^-2

当平均相对误差 MERE < Threshold,最大相对误差 MARE < 10 * Threshold 时判定为通过。

5. 标准 Golden 代码

import torch """ Maximum算子Torch Golden参考实现 返回两个输入张量中的最大值,支持广播 公式: y = max(x1, x2) """ def maximum( x1: torch.Tensor, x2: torch.Tensor ) -> torch.Tensor: """ 返回两个输入张量中的最大值,支持广播 公式: y = max(x1, x2) Args: x1: 第1个输入张量 x2: 第2个输入张量 Returns: 输出张量,两个输入中的最大值 """ y = torch.maximum(x1, x2) return y

6. 额外信息

算子调用示例

import torch import cann_bench x1 = torch.randn(1024, 1024, dtype=torch.float16, device="npu") x2 = torch.randn(1024, 1024, dtype=torch.float16, device="npu") y = cann_bench.maximum(x1, x2) # 广播场景:标量广播 x1 = torch.randn(2, 8, 256, 256, dtype=torch.float32, device="npu") x2 = torch.tensor([0.0], dtype=torch.float32, device="npu") y = cann_bench.maximum(x1, x2) # 类似 ReLU # 整数类型 x1 = torch.randint(-128, 127, (512, 512, 4), dtype=torch.int8, device="npu") x2 = torch.randint(-10, 10, (1, 512, 1), dtype=torch.int8, device="npu") y = cann_bench.maximum(x1, x2)

【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台,推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询