尧图精选

CANN/GE ES可选输入样例

🕒 发布时间:2026/9/10 20:03:24 📁 来源:尧图网络
样例使用指导【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge1、功能描述本样例使用BatchNorm算子可选输入进行构图旨在帮助构图开发者快速理解可选输入定义和使用该类型算子进行构图2、目录结构cpp/ ├── src/ | └── CMakeLists.txt // CMake构建文件 | └── es_showcase.h // 头文件 | └── make_batchnorm_graph.cpp // sample文件 ├── CMakeLists.txt // CMake构建文件 ├── main.cpp // 程序主入口 ├── README.md // README文件 ├── run_sample.sh // 执行脚本 ├── utils.h // 工具文件3、使用方法3.1、准备cann包通过安装指导 环境准备正确安装toolkit和ops包设置环境变量 (假设包安装在/usr/local/Ascend/)source /usr/local/Ascend/cann/set_env.sh3.2、编译和执行1.2.1 生成 es 接口与构建图进行DUMP只需运行下述命令即可完成清理、生成接口、构图和DUMP图bash run_sample.sh当前 run_sample.sh 的行为是先自动清理旧的 build构建 sample并默认执行sample dump 。当看到如下信息代表执行成功[Success] sample 执行成功pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头可以在 netron 中打开显示1.2.2 输出文件说明执行成功后会在当前目录生成以下文件ge_onnx_*.pbtxt - 图结构的protobuf文本格式可用netron查看1.2.3 构建图并执行基本的图构建和dump功能外esb_sample支持构建图并实际执行计算。bash run_sample.sh -t sample_and_run该命令会自动生成ES接口编译sample程序生成dump图、运行图并输出计算结果执行成功后会看到[Success] sample_and_run 执行成功pbtxt和data输出dump 已生成在当前目录可通过data文件查看计算结果3.3、日志打印可执行程序执行过程中如果需要日志打印来辅助定位可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕export ASCEND_SLOG_PRINT_TO_STDOUT1 #日志打印到屏幕 export ASCEND_GLOBAL_LOG_LEVEL0 #日志级别为debug级别1.4、图编译DUMP图可执行程序执行过程中如果需要DUMP图来辅助定位图编译流程可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下export DUMP_GE_GRAPH24、核心概念介绍4.1、构图步骤如下创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)添加起始节点(起始节点指无输入依赖的节点通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))添加中间节点(中间节点为具有输入依赖的计算节点通常由用户构图逻辑生成并通过已有节点作为输入连接)设置图输出(明确图的输出节点作为计算结果的终点)4.2、概念说明可选输入是指算子的某些输入是非必选输入。例如 BatchNorm 算子原型如下所示ES 构图生成的API是BatchNorm()支持在 Python 层使用REG_OP(BatchNorm) .INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT})) .INPUT(scale, TensorType({DT_FLOAT})) .INPUT(offset, TensorType({DT_FLOAT})) .OPTIONAL_INPUT(mean, TensorType({DT_FLOAT})) .OPTIONAL_INPUT(variance, TensorType({DT_FLOAT})) .OUTPUT(y, TensorType({DT_FLOAT16,DT_FLOAT})) .OUTPUT(batch_mean, TensorType({DT_FLOAT})) .OUTPUT(batch_variance, TensorType({DT_FLOAT})) .OUTPUT(reserve_space_1, TensorType({DT_FLOAT})) .OUTPUT(reserve_space_2, TensorType({DT_FLOAT})) .OUTPUT(reserve_space_3, TensorType({DT_FLOAT})) .ATTR(epsilon, Float, 0.0001f) .ATTR(data_format, String, NHWC) .ATTR(is_training, Bool, true) .ATTR(exponential_avg_factor, Float, 1.0) .OP_END_FACTORY_REG(BatchNorm)其对应的函数原型为函数名BatchNorm参数共 9 个依次为 x scale offset mean(可选输入) variance(可选输入) epsilon data_format is_training exponential_avg_factor返回值输出 y batch_mean batch_variance reserve_space_1 reserve_space_2 reserve_space_3C API中EsBatchNormOutput EsBatchNorm(EsCTensorHolder *x, EsCTensorHolder *scale, EsCTensorHolder *offset, EsCTensorHolder *mean, EsCTensorHolder *variance, float epsilon, const char *data_format, bool is_training, float exponential_avg_factor); typedef struct { EsCTensorHolder *y; EsCTensorHolder *batch_mean; EsCTensorHolder *batch_variance; EsCTensorHolder *reserve_space_1; EsCTensorHolder *reserve_space_2; EsCTensorHolder *reserve_space_3; } EsBatchNormOutput;C API中BatchNormOutput BatchNorm(const EsTensorLike x, const EsTensorLike scale, const EsTensorLike offset, const EsTensorLike meannullptr, const EsTensorLike variancenullptr, float epsilon0.000100, const char *data_formatNHWC, bool is_trainingtrue, float exponential_avg_factor1.000000); struct BatchNormOutput { EsTensorHolder y; EsTensorHolder batch_mean; EsTensorHolder batch_variance; EsTensorHolder reserve_space_1; EsTensorHolder reserve_space_2; EsTensorHolder reserve_space_3; };注 使用TensorLike类型表达输入以支持实参可以直接传递数值的情况【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →