CANN/cann-bench: 加除乘复合算子
ForeachAddcdivScalar 算子 API 描述【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench1. 算子简介ForeachAddcdivScalar 算子对多个张量列表进行逐元素的加、除、乘复合操作是优化器如 Adam中常用的基础运算。主要应用场景Adam / AdamW 优化器的参数更新步骤需要对多组参数同时执行 addcdiv 运算的场景分布式训练中的批量参数更新算子特征难度等级L1FusedComposite三组 TensorList 输入逐元素复合运算输出 TensorList 与输入 shape 一致2. 算子定义数学公式对列表中第 $i$ 个张量$$ y_i x1_i \frac{x2_i}{x3_i} \cdot scalar $$3. 接口规范算子原型cann_bench.foreach_addcdiv_scalar(Tensor[] x1, Tensor[] x2, Tensor[] x3, float scalar) - Tensor[] y输入参数说明参数类型默认值描述x1Tensor[]必选第 1 个输入张量列表TensorList被加数x2Tensor[]必选第 2 个输入张量列表TensorList被除数的分子x3Tensor[]必选第 3 个输入张量列表TensorList被除数的分母scalarfloat必选缩放因子输出参数Shapedtype描述y与输入 TensorList 各元素 shape 相同与输入 dtype 相同逐元素复合运算结果列表数据类型输入 dtype输出 dtypefloat16float16float32float32bfloat16bfloat16规则与约束x1、x2、x3 三个 TensorList 长度必须相同对应位置的张量 shape 必须一致列表中各张量的 dtype 须一致x3 中的元素不应为零除以零会产生 inf/nan4. 精度要求采用生态算子精度标准进行验证。误差指标平均相对误差MERE采样点中相对误差平均值$$ \text{MERE} \text{avg}(\frac{\text{abs}(actual - golden)}{\text{abs}(golden)\text{1e-7}}) $$最大相对误差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 from typing import List def foreach_addcdiv_scalar( x1: List[torch.Tensor], x2: List[torch.Tensor], x3: List[torch.Tensor], scalar: float ) - List[torch.Tensor]: 对多个张量进行逐元素加、乘、除操作 公式y_i x1_i (x2_i / x3_i) * scalar Args: x1: 第 1 个输入张量列表 (TensorList) x2: 第 2 个输入张量列表 (TensorList) x3: 第 3 个输入张量列表 (TensorList) scalar: 缩放因子 Returns: 输出张量列表 y [x1_i (x2_i / x3_i) * scalar for x1_i, x2_i, x3_i in zip(x1, x2, x3)] return y6. 额外信息算子调用示例import torch import cann_bench x1 [torch.randn(1024, 1024, dtypetorch.float32, devicenpu)] x2 [torch.randn(1024, 1024, dtypetorch.float32, devicenpu)] x3 [torch.rand(1024, 1024, dtypetorch.float32, devicenpu) 0.1] # 避免除零 y cann_bench.foreach_addcdiv_scalar(x1, x2, x3, scalar1.0)【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考