新闻详情

新闻详情

首页 / 资讯中心 / 详情

CANN/GE控制边C++示例

发布时间:2026/9/10 19:44:57来源:尧图网络
CANN/GE控制边C++示例
样例使用指导【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge1、功能描述本样例使用控制边进行构图旨在帮助构图开发者快速理解控制边的概念和使用控制边进行构图2、目录结构cpp/ ├── src/ | └── CMakeLists.txt // CMake构建文件 | └── es_showcase.h // 头文件 | └── make_control_edge_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、编译和执行只需运行下述命令即可完成清理、生成接口、构图和DUMP图bash run_sample.sh当前 run_sample.sh 的行为是先自动清理旧的 build构建 sample并默认执行sample dump 。当看到如下信息代表执行成功[Success] sample 执行成功pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头可以在 netron 中打开显示输出文件说明执行成功后会在当前目录生成以下文件ge_onnx_*.pbtxt- 图结构的protobuf文本格式可用netron查看构建图并执行除了基本的图构建和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级别3.4、图编译流程中DUMP图可执行程序执行过程中如果需要DUMP图来辅助定位图编译流程可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下export DUMP_GE_GRAPH24、核心概念介绍4.1、构图步骤如下创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)添加起始节点(起始节点指无输入依赖的节点通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))添加中间节点(中间节点为具有输入依赖的计算节点通常由用户构图逻辑生成并通过已有节点作为输入连接)设置图输出(明确图的输出节点作为计算结果的终点)4.2、控制边Control Edge概念说明控制边用于在计算图中指定节点的执行顺序即使这些节点之间没有数据依赖关系。控制边不传递数据只传递控制信号确保源节点在目标节点之前执行。构图 API 特点ES API 提供了AddControlEdge()方法支持在 C、C使用可以为一个目标节点添加多个源节点的控制依赖5、控制依赖关系示例本文档展示如何在 C 和 C 层面表达控制依赖关系。5.1、场景说明假设我们有以下计算需求节点1: tensor_a Const(1.0) 节点2: tensor_b Const(2.0) 节点3: tensor_c Add(tensor_a, tensor_b) 控制依赖: tensor_c 必须在 tensor_a 和 tensor_b 之后执行虽然Add操作已经有数据依赖(依赖 tensor_a 和 tensor_b)但这里我们用它来演示控制依赖的表达方式。5.2、C 层 API 示例#include esb_funcs.h // 1. 创建图构建器 EsCGraphBuilderPtr builder EsCreateGraphBuilder(control_dep_example); // 2. 创建节点 EsCTensorHolderPtr tensor_a EsCreateScalarFloat(builder, 1.0f); EsCTensorHolderPtr tensor_b EsCreateScalarFloat(builder, 2.0f); // 3. 创建依赖目标节点假设有 EsAdd 函数 EsCTensorHolderPtr tensor_c EsAdd(tensor_a, tensor_b); // 4. 添加控制依赖tensor_c 依赖于 tensor_a 和 tensor_b EsCTensorHolderPtr src_tensors[] {tensor_a, tensor_b}; uint32_t ret EsAddControlEdge(tensor_c, src_tensors, 2); if (ret ! 0) { printf(Failed to add control dependency\n); // 错误处理 } // 5. 设置输出并构建图 EsSetGraphOutput(tensor_c, 0); EsCGraphPtr graph EsBuildGraph(builder); // 6. 清理 EsDestroyGraphBuilder(builder);5.3、C 层 API 示例# include es_graph_builder.h using namespace ge::es; void build_graph_with_control_dep() { // 1. 创建图构建器 EsGraphBuilder builder(control_dep_example); // 2. 创建节点 auto tensor_a builder.CreateScalar(1.0f); auto tensor_b builder.CreateScalar(2.0f); // 3. 创建依赖目标节点 添加控制依赖 auto tensor_c Add(tensor_a, tensor_b) (void) tensor_c.AddControlEdge({tensor_a, tensor_b}); // 5. 设置输出并构建 builder.SetOutput(tensor_c, 0); auto graph_ptr builder.build_and_reset(); }【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Halo 自定义 FormKit select 组件增强:为下拉选项添加 icon 与 description 元数据 2026/9/10 20:21:03

Halo 自定义 FormKit select 组件增强:为下拉选项添加 icon 与 description 元数据

Halo 自定义 FormKit select 组件增强:为下拉选项添加 icon 与 description 元数据 【免费下载链接】halo Halo 是一款强大易用的开源建站工具,从个人博客、知识库,到企业官网、在线商城,Halo 都能助您轻松实现,一站式…

阅读更多 →
从功率级到控制环路:DC-DC变换器设计全流程解析 2026/9/10 20:21:03

从功率级到控制环路:DC-DC变换器设计全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ESLint arrow-body-style 规则深度解析:箭头函数体大括号的强制、省略与自动修复 2026/9/10 20:21:03

ESLint arrow-body-style 规则深度解析:箭头函数体大括号的强制、省略与自动修复

ESLint arrow-body-style 规则深度解析:箭头函数体大括号的强制、省略与自动修复 【免费下载链接】eslint Find and fix problems in your JavaScript code. 项目地址: https://gitcode.com/GitHub_Trending/es/eslint ESLint 的 arrow-body-style 规则用于统…

阅读更多 →
期货CTA策略回测失真怎么办?WorkBuddy+BigQuant实现真实市场仿真 2026/9/10 20:21:03

期货CTA策略回测失真怎么办?WorkBuddy+BigQuant实现真实市场仿真

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
利润计算器:商业决策与财务管理的核心工具 2026/9/10 20:21:03

利润计算器:商业决策与财务管理的核心工具

1. 项目概述:为什么你需要一个利润计算器?在商业运营和财务管理中,利润计算是最基础却最容易被忽视的环节。我见过太多创业者和小企业主,他们能准确说出每月的营业额,却对实际利润模棱两可。这就是Profit Calculator这…

阅读更多 →
用户决策阻力:高转化背后的商业逻辑与实战策略 2026/9/10 20:18:02

用户决策阻力:高转化背后的商业逻辑与实战策略

1. 选品新思维:用户决策阻力背后的商业逻辑去年帮一个做户外用品的朋友分析产品线时,发现个有趣现象:他店里卖得最好的不是99元的简易帐篷,而是标价899元的专业级帐篷。更奇怪的是,这款高价帐篷的退货率几乎为零&#…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞