# esb_sample **Repository Path**: hugo1/esb_sample ## Basic Information - **Project Name**: esb_sample - **Description**: esb_sample - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2025-07-22 - **Last Updated**: 2025-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # esb_sample ## 简介 ## 使用方法 ### 准备工作 **下载代码** ``` git clone git@gitee.com:ni100die/esb_sample.git ``` **下载submodule** ``` git submodule init && git submodule update ``` **准备cann包** ``` bash prepare_dev_env.sh ``` ### 编译和执行 #### es接口所在的文件生成部分 ```bash $ bash run_sample.sh --target gen_esb ``` 应该看到如下信息,代表执行成功: ```bash [Success] gen_esb 执行成功,产物位于 generated/esb/es_* ``` 执行成功后,会在generated/esb/目录下生成以下文件: ```bash generated/esb/ ├─ es_all_ops.h # C++ 聚合头文件 ├─ es_all_ops_c.h # C 聚合头文件 ├─ es__c.h # 每个算子的 C 接口声明 ├─ es_.cpp # 每个算子的 C 接口实现 ├─ es_.h # 每个算子的 C++ 接口声明 ├─ es_.py # 每个算子的 python 接口 ``` #### 生成 es 接口与构建运行 只需运行下述命令即可完成清理、生成接口、编译、运行所有步骤: ```bash $ bash run_sample.sh ``` 当前 run_sample.sh 的行为是:在执行 sample 目标前,会自动清理旧的 build 与 generated/esb(防止残留旧源码被编译),然后执行gen_esb。应该看到如下信息,代表执行成功: ```bash [Success] gen_esb 执行成功,产物位于 generated/esb/es_* [Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示 ``` 查看当前目录,会发现`dump`出的文件: ```bash $ ll ge_onnx_* -rw------- 1 sn sn 42523 May 22 22:21 ge_onnx_00000000_graph_0_sample.pbtxt ``` #### 日志打印 可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕 ```bash export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 ``` ## 代码介绍 ```angular2html esb_sample ├── base # metadef的submodel目录 ├── eager_style_graph_builer # es构图源码目录 ├── es_showcase # 使用es动态构建计算图 ├── ir_showcase # 传统ge ir构图 ├── dump.cpp # 内部的dump图接口, 用于生成pbtxt ├── main.cpp # 构图示例接口,对应dump出来的pbtxt的构图代码 ```