已合并
【PR】: 修正表格展示问题 #5142
Sophia1213创建于 26 天前
【PR】: 修正表格展示问题 #5142
已合并
Sophia1213创建于 26 天前
共 131 个文件变更+950-298
@@ -42,7 +42,7 @@ Developers can download the source code of this repository through the following
42#### Install Dependencies42#### Install Dependencies
43 43 
44 The following lists the dependencies used for GE source code compilation, please note version requirements (if you encounter installation issues, please try switching mirror sources).44 The following lists the dependencies used for GE source code compilation, please note version requirements (if you encounter installation issues, please try switching mirror sources).
45- > [!NOTE] Note45+ > [!NOTE]Note
46 > If using mirror mode for project experience, all dependencies are already included in [init_env.sh](../../scripts/init_env.sh), you can skip this install dependencies step.46 > If using mirror mode for project experience, all dependencies are already included in [init_env.sh](../../scripts/init_env.sh), you can skip this install dependencies step.
47 47 
48- GCC >= 7.3.x48- GCC >= 7.3.x
@@ -94,12 +94,12 @@ Check result explanation is as follows:
94| **[WARNING]** | Non-critical dependency missing or version deviation | Suggest fixing, does not affect core compilation |94| **[WARNING]** | Non-critical dependency missing or version deviation | Suggest fixing, does not affect core compilation |
95| **[ERROR]** | Critical dependency missing or version incompatible | Must fix, otherwise cannot compile |95| **[ERROR]** | Critical dependency missing or version incompatible | Must fix, otherwise cannot compile |
96 96 
97-> [!NOTE] Note97+> [!NOTE]Note
98> All check items and version constraints in the environment check script strictly come from docs/en/build.md and requirements.txt. If documents and dependencies are updated, please synchronize modification to [script](../../scripts/check_env.sh).98> All check items and version constraints in the environment check script strictly come from docs/en/build.md and requirements.txt. If documents and dependencies are updated, please synchronize modification to [script](../../scripts/check_env.sh).
99 99 
100### 4.3 Compilation100### 4.3 Compilation
101 101 
102-> [!NOTE] Note102+> [!NOTE]Note
103> If your compilation environment cannot access the network, since source code cannot be downloaded through `git` command, you need to download source code and third-party library dependencies in a networked environment, then manually upload to target environment. Please refer to [Offline Compilation Guide](./user_guides/offline_compile.md).103> If your compilation environment cannot access the network, since source code cannot be downloaded through `git` command, you need to download source code and third-party library dependencies in a networked environment, then manually upload to target environment. Please refer to [Offline Compilation Guide](./user_guides/offline_compile.md).
104> If your compilation environment can access the network, after downloading source code through `git` command, open source third-party software will be automatically downloaded during compilation process.104> If your compilation environment can access the network, after downloading source code through `git` command, open source third-party software will be automatically downloaded during compilation process.
105 105 
@@ -119,7 +119,7 @@ More compilation parameters can be viewed through `bash build.sh -h`. After succ
119 119 
120### 4.4 Local Verification (UT/ST)120### 4.4 Local Verification (UT/ST)
121 121 
122-> [!NOTE] Note122+> [!NOTE]Note
123> If your compilation environment cannot access the network, please ensure you have completed the [Offline Compilation Guide](./user_guides/offline_compile.md) in [4.3 Compilation](#43-compilation) chapter.123> If your compilation environment cannot access the network, please ensure you have completed the [Offline Compilation Guide](./user_guides/offline_compile.md) in [4.3 Compilation](#43-compilation) chapter.
124 124 
125After compilation is complete, users can perform developer testing.125After compilation is complete, users can perform developer testing.
@@ -187,7 +187,7 @@ After compilation is complete, users can perform developer testing.
187 rm -rf build_ut/ build_st/ output/ build/ build_out/ cov/187 rm -rf build_ut/ build_st/ output/ build/ build_out/ cov/
188 ```188 ```
189 189 
190-> [!NOTE] Description190+> [!NOTE]Note
191> Detailed command parameters supported by `tests/run_test.sh` script can be viewed through `bash tests/run_test.sh -h`.191> Detailed command parameters supported by `tests/run_test.sh` script can be viewed through `bash tests/run_test.sh -h`.
192 192 
193### 4.5 Installation and Uninstallation193### 4.5 Installation and Uninstallation
@@ -200,7 +200,7 @@ After compilation is complete, users can perform developer testing.
200 ./cann-<component>_<version>_<arch>.run --full --install-path=${install_path}200 ./cann-<component>_<version>_<arch>.run --full --install-path=${install_path}
201 ```201 ```
202 202 
203- > [!CAUTION] Note203+ > [!CAUTION]CAUTION
204 > - The installation path here (whether default or specified) needs to be consistent with the path where Toolkit package was installed earlier. After installation is complete, the `GE` software package compiled by the user will replace the `GE` related software in the already installed CANN development suite package.204 > - The installation path here (whether default or specified) needs to be consistent with the path where Toolkit package was installed earlier. After installation is complete, the `GE` software package compiled by the user will replace the `GE` related software in the already installed CANN development suite package.
205 > - `cann-dflow-executor_<version>_<arch>.run` software package is only needed when using [dflow feature](https://hiascend.com/en/document/redirect/CannCommunityDataflow). If only using GE graph compilation and execution functions, you can choose not to install. This package contains `cann-udf-compat.tar.gz` (UDF compatibility upgrade package), which will be loaded to Device side during service startup. During loading process, the driver defaults to performing security signature verification to ensure package trustworthiness. The `cann-udf-compat.tar.gz` generated by compiling from source code in this repository does not contain signature header, so you must disable the driver's security signature verification mechanism to use it.How to disable signature verification:205 > - `cann-dflow-executor_<version>_<arch>.run` software package is only needed when using [dflow feature](https://hiascend.com/en/document/redirect/CannCommunityDataflow). If only using GE graph compilation and execution functions, you can choose not to install. This package contains `cann-udf-compat.tar.gz` (UDF compatibility upgrade package), which will be loaded to Device side during service startup. During loading process, the driver defaults to performing security signature verification to ensure package trustworthiness. The `cann-udf-compat.tar.gz` generated by compiling from source code in this repository does not contain signature header, so you must disable the driver's security signature verification mechanism to use it.How to disable signature verification:
206 >206 >
@@ -3,9 +3,9 @@
3## Product Support Status3## Product Support Status
4 4 
5| Product | Support Status |5| Product | Support Status |
6-| | :----------- | :------: |6+| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -3,9 +3,9 @@
3## Product Support Status3## Product Support Status
4 4 
5| Product | Support Status |5| Product | Support Status |
6-| | :----------- | :------: |6+| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -24,7 +24,7 @@ class GeError(RuntimeError):
24## Attribute Description24## Attribute Description
25 25 
26| Attribute | Type | Description |26| Attribute | Type | Description |
27-| | :--- | :--- | :--- |27+| :--- | :--- | :--- |
28| error_message | Optional[str] | Internal error information reported by GE ErrMgr |28| error_message | Optional[str] | Internal error information reported by GE ErrMgr |
29| api_name | Optional[str] | Name of failed Python API or underlying GE API |29| api_name | Optional[str] | Name of failed Python API or underlying GE API |
30| context | Dict[str, Any] | Context information supplemented by Python interface, such as graph_id, stream, output_file |30| context | Dict[str, Any] | Context information supplemented by Python interface, such as graph_id, stream, output_file |
@@ -3,9 +3,9 @@
3## Product Support Status3## Product Support Status
4 4 
5| Product | Support Status |5| Product | Support Status |
6-| :----------- | :------: |6+| :------ | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support Status |5| Product | Support Status |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support Status |5| Product | Support Status |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -3,9 +3,9 @@
3## Product Support Status3## Product Support Status
4 4 
5| Product | Support Status |5| Product | Support Status |
6-| | :----------- | :------: |6+| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support Status |5| Product | Support Status |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support Status |5| Product | Support Status |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support Status |5| Product | Support Status |
6| :----------------------------------------------------------- | :------: |6| :----------------------------------------------------------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support Status |5| Product | Support Status |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -3,9 +3,9 @@
3## Product Support Status3## Product Support Status
4 4 
5| Product | Support Status |5| Product | Support Status |
6-| :----------- | :------: |6+| :------ | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support |5| Product | Support |
6| :--- | :---: |6| :--- | :---: |
7-| Atlas A3 Training Products/Atlas A3 Inference Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Products/Atlas A2 Inference Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -3,9 +3,9 @@
3## Product Support3## Product Support
4 4 
5| Product | Support |5| Product | Support |
6-| :----------- | :------: |6+| :------ | :------: |
7-| Atlas A3 Training Products/Atlas A3 Inference Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Products/Atlas A2 Inference Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -3,9 +3,9 @@
3## Product Support3## Product Support
4 4 
5| Product | Support |5| Product | Support |
6-| :----------------------------------------------------------- | :------: |6+| :------ | :------: |
7-| Atlas A3 Training Products/Atlas A3 Inference Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Products/Atlas A2 Inference Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support Status |5| Product | Support Status |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Module Import10## Module Import
11 11 
@@ -4,8 +4,8 @@
4 4 
5| Product | Support |5| Product | Support |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 Training Products/Atlas A3 Inference Products | √ |7+| Atlas A3 products | √ |
8-| Atlas A2 Training Products/Atlas A2 Inference Products | √ |8+| Atlas A2 products | √ |
9 9 
10## Functionality Description10## Functionality Description
11 11 
@@ -5,7 +5,7 @@ Graph类用于表示和操作计算图。
5基本图操作调用示例:5基本图操作调用示例:
6 6 
7```python7```python
8-from ge.graph import Graph, DataType, Format8+from ge.graph import Graph, DataType, Format, DumpFormat
9 9 
10# 创建图10# 创建图
11graph = Graph("my_graph")11graph = Graph("my_graph")
@@ -6,7 +6,7 @@ Session类用于管理图的执行会话。
6 6 
7```python7```python
8from ge.session import Session8from ge.session import Session
9-from ge.graph import Tensor9+from ge.graph import Tensor, DataType, Format
10from ge.ge_global import GeApi10from ge.ge_global import GeApi
11 11 
12# 初始化 GE12# 初始化 GE
@@ -42,7 +42,7 @@ cat /usr/local/Ascend/cann/<arch>-linux/ascend_ops_install.info
42#### 安装依赖42#### 安装依赖
43 43 
44 以下所列为GE源码编译用到的依赖,请注意版本要求(如果遇到安装问题,请尝试切换镜像源)。44 以下所列为GE源码编译用到的依赖,请注意版本要求(如果遇到安装问题,请尝试切换镜像源)。
45- > [!NOTE] 注意45+ > [!NOTE] 说明
46 > 如使用镜像方式进行项目体验,所有依赖已包含在[init_env.sh](../../scripts/init_env.sh)中,可跳过此安装依赖步骤。46 > 如使用镜像方式进行项目体验,所有依赖已包含在[init_env.sh](../../scripts/init_env.sh)中,可跳过此安装依赖步骤。
47 47 
48- GCC >= 7.3.x48- GCC >= 7.3.x
@@ -94,12 +94,12 @@ bash scripts/check_env.sh
94| **[WARNING]** | 非关键依赖缺失或版本存在偏差 | 建议修复,不影响核心编译 |94| **[WARNING]** | 非关键依赖缺失或版本存在偏差 | 建议修复,不影响核心编译 |
95| **[ERROR]** | 关键依赖缺失或版本不兼容 | 必须修复,否则无法编译 |95| **[ERROR]** | 关键依赖缺失或版本不兼容 | 必须修复,否则无法编译 |
96 96 
97-> [!NOTE] 注意97+> [!NOTE]说明
98> 环境检查脚本中所有的检查项和版本约束严格来源于docs/zh/build.md和requirements.txt,如文档和依赖更新,请同步修改[脚本](../../scripts/check_env.sh)。98> 环境检查脚本中所有的检查项和版本约束严格来源于docs/zh/build.md和requirements.txt,如文档和依赖更新,请同步修改[脚本](../../scripts/check_env.sh)。
99 99 
100### 4.3 编译100### 4.3 编译
101 101 
102-> [!NOTE] 注意102+> [!NOTE]说明
103> 若您的编译环境无法访问网络,由于无法通过`git`指令下载代码,须在联网环境中下载源码及三方库依赖后,手动上传至目标环境,参见[离线编译指导](./user_guides/offline_compile.md)。103> 若您的编译环境无法访问网络,由于无法通过`git`指令下载代码,须在联网环境中下载源码及三方库依赖后,手动上传至目标环境,参见[离线编译指导](./user_guides/offline_compile.md)。
104> 若您的编译环境可以访问网络,通过`git`指令下载代码后,编译过程中将自动下载开源第三方软件。104> 若您的编译环境可以访问网络,通过`git`指令下载代码后,编译过程中将自动下载开源第三方软件。
105 105 
@@ -119,7 +119,7 @@ bash scripts/check_env.sh
119 119 
120### 4.4 本地验证(UT/ST)120### 4.4 本地验证(UT/ST)
121 121 
122-> [!NOTE] 注意122+> [!NOTE]说明
123> 若您的编译环境无法访问网络,请确保已经完成了[4.3 编译](#43-编译)章节中的[离线编译指导](./user_guides/offline_compile.md)。123> 若您的编译环境无法访问网络,请确保已经完成了[4.3 编译](#43-编译)章节中的[离线编译指导](./user_guides/offline_compile.md)。
124 124 
125- 编译执行`UT`测试用例(x86_64默认开启asan):125- 编译执行`UT`测试用例(x86_64默认开启asan):
@@ -29,21 +29,21 @@
29参数值查询方法如下:29参数值查询方法如下:
30 30 
31<!-- npu="950" id9 -->31<!-- npu="950" id9 -->
32-- 针对Ascend 950PR&950DT系列产品,在安装AI处理器的服务器执行**npu-smi info -t board -i **_id_命令进行查询,获取**Chip Name**和**NPU Name**信息,实际配置值为Chip Name\_NPU Name。例如**Chip Name**取值为Ascendxxx,**NPU Name**取值为1234,实际配置值为Ascendxxx\_1234。32+- 针对Ascend 950PR&950DT系列产品,在安装AI处理器的服务器执行`npu-smi info -t board -i id`命令进行查询,获取Chip Name和NPU Name信息,实际配置值为`Chip Name_NPU Name`。例如Chip Name取值为`Ascendxxx`,NPU Name取值为`1234`,实际配置值为`Ascendxxx_1234`。
33 33 
34- 其中,id为设备id,通过**npu-smi info -l**命令查出的NPU ID即为设备id。34+ 其中,id为设备id,通过`npu-smi info -l`命令查出的NPU ID即为设备id。
35<!-- end id9 -->35<!-- end id9 -->
36 36 
37<!-- npu="A3" id8 -->37<!-- npu="A3" id8 -->
38-- 针对Atlas A3系列产品,在安装AI处理器的服务器执行**npu-smi info -t board -i ***id*** -c **_chip\_id_命令进行查询,获取**Chip Name**和**NPU Name**信息,实际配置值为Chip Name\_NPU Name。例如**Chip Name**取值为Ascendxxx,**NPU Name**取值为1234,实际配置值为Ascendxxx\_1234。其中:38+- 针对Atlas A3系列产品,在安装AI处理器的服务器执行`npu-smi info -t board -i id -c chip_id`命令进行查询,获取Chip Name和NPU Name信息,实际配置值为 Chip Name_NPU Name 。例如Chip Name取值为`Ascendxxx`,NPU Name取值为`1234`,实际配置值为`Ascendxxx_1234`。其中:
39 39 
40- - id:设备id,通过**npu-smi info -l**命令查出的NPU ID即为设备id。40+ - id:设备id,通过`npu-smi info -l`命令查出的NPU ID即为设备id。
41 41 
42- - chip\_id:芯片id,通过**npu-smi info -m**命令查出的Chip ID即为芯片id。42+ - chip\_id:芯片id,通过`npu-smi info -m`命令查出的Chip ID即为芯片id。
43<!-- end id8 -->43<!-- end id8 -->
44 44 
45<!-- npu="910b,910,310p,310b" id6 -->45<!-- npu="910b,910,310p,310b" id6 -->
46-- 针对如下产品:在安装AI处理器的服务器执行**npu-smi info**命令进行查询,获取**Name**信息。实际配置值为AscendName,例如**Name**取值为*xxxyy*,实际配置值为Ascendxxxyy。46+- 针对如下产品:在安装AI处理器的服务器执行`npu-smi info`命令进行查询,获取Name信息。实际配置值为`AscendName`,例如Name取值为 `xxxyy`,实际配置值为`Ascendxxxyy`。
47 47 
48 <!-- npu="910b" id1 -->48 <!-- npu="910b" id1 -->
49 Atlas A2系列产品49 Atlas A2系列产品
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -8,8 +8,8 @@ from ge.error import GeError
8 8 
9## 功能说明9## 功能说明
10 10 
11-`GeError` 是 GE Python API 在调用底层 GE 接口失败时抛出的异常类型,继承自 `RuntimeError`。11+`GeError` 是GE Python API在调用底层GE接口失败时抛出的异常类型,继承自 `RuntimeError`。
12-原有捕获 `RuntimeError` 的代码仍然可以捕获该异常;需要读取 GE ErrMgr 内部错误信息和接口上下文时,12+原有捕获 `RuntimeError` 的代码仍然可以捕获该异常;需要读取GE ErrMgr内部错误信息和接口上下文时,
13可以捕获 `GeError`。13可以捕获 `GeError`。
14 14 
15## 类定义15## 类定义
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------------------------------------------------------- | :------: |6| :----------------------------------------------------------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :--- | :---: |6| :--- | :---: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------------------------------------------------------- | :------: |6| :----------------------------------------------------------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 模块导入10## 模块导入
11 11 
@@ -4,8 +4,8 @@
4 4 
5| 产品 | 是否支持 |5| 产品 | 是否支持 |
6| :----------- | :------: |6| :----------- | :------: |
7-| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |7+| Atlas A3系列产品 | √ |
8-| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |8+| Atlas A2系列产品 | √ |
9 9 
10## 功能说明10## 功能说明
11 11 
@@ -1,19 +1,28 @@
1## 简介1## 简介
2+ 
2因为ES构图API是基于IR原型生成, 部分算子IR无法支撑所有信息表达(Conv)或者IR表达有冗余信息(IdentityN), 所以推荐用户自行封装ES API, 同时支持用户自定义行为。<br>3因为ES构图API是基于IR原型生成, 部分算子IR无法支撑所有信息表达(Conv)或者IR表达有冗余信息(IdentityN), 所以推荐用户自行封装ES API, 同时支持用户自定义行为。<br>
3该Sample旨在指导用户如何自定义ES API <br>4该Sample旨在指导用户如何自定义ES API <br>
4**注:** Conv2D等算子在默认生成API中, 直接使用会有Format问题, 需要自行添加逻辑并生成自定义ES API(见 [Sample 1](#sample1))5**注:** Conv2D等算子在默认生成API中, 直接使用会有Format问题, 需要自行添加逻辑并生成自定义ES API(见 [Sample 1](#sample1))
6+ 
5## 快速开始7## 快速开始
8+ 
61. 通过[安装指导](../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包, 并正确配置环境变量91. 通过[安装指导](../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包, 并正确配置环境变量
72. 通过命令`bash run_sample.sh` 运行脚本 [run_sample.sh](run_sample.sh)102. 通过命令`bash run_sample.sh` 运行脚本 [run_sample.sh](run_sample.sh)
8 11 
9## 预期结果12## 预期结果
13+ 
10项目build目录下生成pbtxt格式dump图14项目build目录下生成pbtxt格式dump图
11 15 
12## 实现步骤16## 实现步骤
17+ 
13### 步骤一. [可选] 生成ES API代码参考18### 步骤一. [可选] 生成ES API代码参考
19+ 
14通过gen_esb可执行程序生成ES_API代码 (参考 [gen_esb_readme.md](../../docs/zh/user_guides/es_graph/tools/gen_esb.md))20通过gen_esb可执行程序生成ES_API代码 (参考 [gen_esb_readme.md](../../docs/zh/user_guides/es_graph/tools/gen_esb.md))
21+ 
15### 步骤二. 自定义ES API代码22### 步骤二. 自定义ES API代码
23+ 
16参考步骤一生成的代码编写自定义API代码, 以下为代码样例24参考步骤一生成的代码编写自定义API代码, 以下为代码样例
25+ 
17- Sample 1. 合法性补全 Conv2D <a id="sample1"></a> <br>26- Sample 1. 合法性补全 Conv2D <a id="sample1"></a> <br>
18 Conv2D类型算子的Format需要自行设置, 可以增加逻辑保证算子有效27 Conv2D类型算子的Format需要自行设置, 可以增加逻辑保证算子有效
19 - [my_Conv2D_c.h](./custom/my_Conv2D_c.h)28 - [my_Conv2D_c.h](./custom/my_Conv2D_c.h)
@@ -40,13 +49,17 @@
40 - [my_Conv2D.h](./custom/my_Conv2D.h)49 - [my_Conv2D.h](./custom/my_Conv2D.h)
41 - [my_Conv2D.cpp](./custom/my_Conv2D.cpp)50 - [my_Conv2D.cpp](./custom/my_Conv2D.cpp)
42 51 
43- 
44### 步骤三. 构图52### 步骤三. 构图
53+ 
45自定义构图代码逻辑 (参照 [main.cc](./src/main.cc))54自定义构图代码逻辑 (参照 [main.cc](./src/main.cc))
55+ 
46### 步骤四. 构建工程56### 步骤四. 构建工程
57+ 
47关键流程如下 (参照 [CMakeLists.txt](CMakeLists.txt))58关键流程如下 (参照 [CMakeLists.txt](CMakeLists.txt))
59+ 
481. 设置变量 && 引入cmake函数601. 设置变量 && 引入cmake函数
492. 定义算子原型库612. 定义算子原型库
62+ 
50 ```cmake63 ```cmake
51 # 注意:64 # 注意:
52 # 当前为开箱即用示例, 即定义INTERFACE使用已有的原型so65 # 当前为开箱即用示例, 即定义INTERFACE使用已有的原型so
@@ -59,7 +72,9 @@
59 INTERFACE_LIBRARY_OUTPUT_DIRECTORY "${ASCEND_INSTALL_PATH}/opp/built-in/op_proto"72 INTERFACE_LIBRARY_OUTPUT_DIRECTORY "${ASCEND_INSTALL_PATH}/opp/built-in/op_proto"
60 )73 )
61 ```74 ```
75+ 
623. 通过`add_es_library_and_whl` 或者 `add_es_library` 生成ES API包, 如果需要屏蔽部分算子ES API生成, 则加入参数EXCLUDE_OPS763. 通过`add_es_library_and_whl` 或者 `add_es_library` 生成ES API包, 如果需要屏蔽部分算子ES API生成, 则加入参数EXCLUDE_OPS
77+ 
63 ```cmake78 ```cmake
64 add_es_library(79 add_es_library(
65 ES_LINKABLE_AND_ALL_TARGET es_all80 ES_LINKABLE_AND_ALL_TARGET es_all
@@ -70,6 +85,7 @@
70 ```85 ```
71 86 
724. 引入构建自定义ES API包874. 引入构建自定义ES API包
88+ 
73 ```cmake89 ```cmake
74 file(GLOB CPP_FILES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/custom/*.cpp")90 file(GLOB CPP_FILES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/custom/*.cpp")
75 add_library(self_defined_es_lib SHARED ${CPP_FILES})91 add_library(self_defined_es_lib SHARED ${CPP_FILES})
@@ -82,7 +98,9 @@
82 ${CMAKE_CURRENT_SOURCE_DIR}/custom98 ${CMAKE_CURRENT_SOURCE_DIR}/custom
83 )99 )
84 ```100 ```
101+ 
855. 自定义 API包 link1025. 自定义 API包 link
103+ 
86 ```cmake104 ```cmake
87 target_link_libraries(self_defined_es_lib PUBLIC es_all)105 target_link_libraries(self_defined_es_lib PUBLIC es_all)
88 106 
@@ -90,6 +108,7 @@
90 ```108 ```
91 109 
92## 注意事项110## 注意事项
111+ 
931. 确保环境变量已正确设置1121. 确保环境变量已正确设置
942. 确保有足够的磁盘空间存储生成的代码文件1132. 确保有足够的磁盘空间存储生成的代码文件
953. 生成的代码文件数量取决于系统中注册的算子数量1143. 生成的代码文件数量取决于系统中注册的算子数量
@@ -6,7 +6,7 @@ This Sample aims to guide users on how to customize ES API <br>
6 6 
7## Quick Start7## Quick Start
8 8 
9-1. Follow the [installation guide](../../docs/zh/quick_install.md) to correctly install `toolkit` and `ops` packages, and properly configure environment variables9+1. Follow the [installation guide](../../docs/en/quick_install.md) to correctly install `toolkit` and `ops` packages, and properly configure environment variables
102. Run the script via command `bash run_sample.sh` [run_sample.sh](run_sample.sh)102. Run the script via command `bash run_sample.sh` [run_sample.sh](run_sample.sh)
11 11 
12## Expected Results12## Expected Results
@@ -138,6 +138,7 @@ data_dependent_shape_custom
138- 当前环境是否具备可用 NPU 和可用 Ascend C 编译环境。138- 当前环境是否具备可用 NPU 和可用 Ascend C 编译环境。
139 139 
140## 注意事项 / 限制140## 注意事项 / 限制
141+ 
141- `WhereLikeCustom` 当前样例输入为一维 `bool[8]`,因此实际输出为匹配位置索引,shape 为 `[true_count, 1]`。142- `WhereLikeCustom` 当前样例输入为一维 `bool[8]`,因此实际输出为匹配位置索引,shape 为 `[true_count, 1]`。
142- `.asc` 编译参数当前固定为 `--npu-arch=dav-2201`,如目标芯片不同需调整 `CMakeLists.txt`。143- `.asc` 编译参数当前固定为 `--npu-arch=dav-2201`,如目标芯片不同需调整 `CMakeLists.txt`。
143 144 
@@ -26,7 +26,7 @@ This sample demonstrates a minimum runnable type III custom operator execution p
26 26 
27- CANN environment has been correctly installed and configured, e.g., executed `source ${ASCEND_HOME_PATH}/set_env.sh`.27- CANN environment has been correctly installed and configured, e.g., executed `source ${ASCEND_HOME_PATH}/set_env.sh`.
28- Current environment has `ACL`, `GE`, `Graph`, `Ascend C` related headers and libraries.28- Current environment has `ACL`, `GE`, `Graph`, `Ascend C` related headers and libraries.
29-- Follow [installation guide](../../../docs/zh/quick_install.md) to complete toolkit and ops package installation.29+- Follow [installation guide](../../../docs/en/quick_install.md) to complete toolkit and ops package installation.
30 30 
31### Framework and Plugins31### Framework and Plugins
32 32 
@@ -1,4 +1,5 @@
1# C++样例使用指导1# C++样例使用指导
2+ 
2## 目录结构3## 目录结构
3 4 
4```5```
@@ -22,12 +23,13 @@
22└── sample_perf.cpp 该样例测试Feed和Fetch的接口性能23└── sample_perf.cpp 该样例测试Feed和Fetch的接口性能
23```24```
24 25 
25- 
26## 环境要求26## 环境要求
27+ 
27- 参考[环境准备](../../../docs/zh/quick_install.md)下载安装驱动/固件/CANN软件包;28- 参考[环境准备](../../../docs/zh/quick_install.md)下载安装驱动/固件/CANN软件包;
28- config目录下的模型生成脚本 model_generator.py 依赖tensorflow,需通过pip3 install tensorflow安装。29- config目录下的模型生成脚本 model_generator.py 依赖tensorflow,需通过pip3 install tensorflow安装。
29 30 
30## 程序编译31## 程序编译
32+ 
31```bash33```bash
32# 执行config目录下的tensorflow原始模型生成脚本:34# 执行config目录下的tensorflow原始模型生成脚本:
33python3 config/model_generator.py35python3 config/model_generator.py
@@ -41,6 +43,7 @@ cd ../output
41```43```
42 44 
43## 运行样例45## 运行样例
46+ 
44numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/cpp/appendices.md#numa_configjson配置):47numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/cpp/appendices.md#numa_configjson配置):
45 48 
46```bash49```bash
@@ -25,7 +25,7 @@
25 25 
26## Environment Requirements26## Environment Requirements
27 27 
28-- Reference [Environment Preparation](../../../docs/zh/quick_install.md) to download and install driver/firmware/CANN software packages;28+- Reference [Environment Preparation](../../../docs/en/quick_install.md) to download and install driver/firmware/CANN software packages;
29- Model generation script model_generator.py in config directory depends on tensorflow, need to install through pip3 install tensorflow.29- Model generation script model_generator.py in config directory depends on tensorflow, need to install through pip3 install tensorflow.
30 30 
31## Program Compilation31## Program Compilation
@@ -1,4 +1,5 @@
1# Python样例使用指导1# Python样例使用指导
2+ 
2## 目录结构3## 目录结构
3 4 
4```5```
@@ -33,6 +34,7 @@
33```34```
34 35 
35## 环境准备36## 环境准备
37+ 
36- 参考[环境准备](../../../docs/zh/quick_install.md)下载安装驱动/固件/CANN软件包;38- 参考[环境准备](../../../docs/zh/quick_install.md)下载安装驱动/固件/CANN软件包;
37 39 
38- python 版本要求:python3.12 具体版本以dataflow wheel包编译时用的python版本为准,如果需要使用不同python版本,可以参考[编译](../../../docs/zh/build.md#43-编译)重新编译ge_compiler包并安装;40- python 版本要求:python3.12 具体版本以dataflow wheel包编译时用的python版本为准,如果需要使用不同python版本,可以参考[编译](../../../docs/zh/build.md#43-编译)重新编译ge_compiler包并安装;
@@ -42,6 +44,7 @@
42- [sample_pytorch.py](sample_pytorch.py)、[sample_npu_model.py](sample_npu_model.py) 样例依赖torch_npu和torchvision包,torch_npu需要根据实际环境,安装对应的**torch**与**torch_npu**包(建议使用大于等于2.1.0的版本, [获取方法](https://gitcode.com/Ascend/pytorch)),torchvision与torch有配套关系,需要等torch安装完之后使用pip3 install torchvision安装。44- [sample_pytorch.py](sample_pytorch.py)、[sample_npu_model.py](sample_npu_model.py) 样例依赖torch_npu和torchvision包,torch_npu需要根据实际环境,安装对应的**torch**与**torch_npu**包(建议使用大于等于2.1.0的版本, [获取方法](https://gitcode.com/Ascend/pytorch)),torchvision与torch有配套关系,需要等torch安装完之后使用pip3 install torchvision安装。
43 45 
44## 运行样例46## 运行样例
47+ 
45numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/python/appendices.md#numa_configjson配置):48numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/python/appendices.md#numa_configjson配置):
46 49 
47```bash50```bash
@@ -35,9 +35,9 @@
35 35 
36## Environment Preparation36## Environment Preparation
37 37 
38-- Refer to [Environment Preparation](../../../docs/zh/quick_install.md) to download and install driver/firmware/CANN software packages;38+- Refer to [Environment Preparation](../../../docs/en/quick_install.md) to download and install driver/firmware/CANN software packages;
39 39 
40-- Python version requirement: python3.12. The specific version should match the python version used when compiling the dataflow wheel package. If you need to use a different python version, you can refer to [Compilation](../../../docs/zh/build.md#43-编译) to recompile the ge_compiler package and install it;40+- Python version requirement: python3.12. The specific version should match the python version used when compiling the dataflow wheel package. If you need to use a different python version, you can refer to [Compilation](../../../docs/en/build.md#43-compilation) to recompile the ge_compiler package and install it;
41 41 
42- The model generation script model_generator.py in the config directory depends on tensorflow-cpu and onnx, which need to be installed via pip3 install tensorflow-cpu and pip3 install onnx;42- The model generation script model_generator.py in the config directory depends on tensorflow-cpu and onnx, which need to be installed via pip3 install tensorflow-cpu and pip3 install onnx;
43 43 
@@ -1,9 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用控制边进行构图,旨在帮助构图开发者快速理解控制边的概念和使用控制边进行构图5本样例使用控制边进行构图,旨在帮助构图开发者快速理解控制边的概念和使用控制边进行构图
5 6 
6## 2、目录结构7## 2、目录结构
8+ 
7```angular2html9```angular2html
8cpp/10cpp/
9├── src/11├── src/
@@ -16,27 +18,36 @@ cpp/
16├── run_sample.sh // 执行脚本18├── run_sample.sh // 执行脚本
17├── utils.h // 工具文件19├── utils.h // 工具文件
18```20```
21+ 
19## 3、使用方法22## 3、使用方法
20 23 
21### 3.1、准备cann包24### 3.1、准备cann包
25+ 
22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包26- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
23- 设置环境变量 (假设包安装在/usr/local/Ascend/)27- 设置环境变量 (假设包安装在/usr/local/Ascend/)
28+ 
24```29```
25source /usr/local/Ascend/cann/set_env.sh30source /usr/local/Ascend/cann/set_env.sh
26```31```
32+ 
27### 3.2、编译和执行33### 3.2、编译和执行
28 34 
29只需运行下述命令即可完成清理、生成接口、构图和DUMP图:35只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
36+ 
30```bash37```bash
31bash run_sample.sh38bash run_sample.sh
32```39```
40+ 
33当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:41当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
42+ 
34```43```
35[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示44[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
36```45```
46+ 
37#### 输出文件说明47#### 输出文件说明
38 48 
39执行成功后会在当前目录生成以下文件:49执行成功后会在当前目录生成以下文件:
50+ 
40- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看51- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
41 52 
42#### 构建图并执行53#### 构建图并执行
@@ -46,41 +57,54 @@ bash run_sample.sh
46```bash57```bash
47bash run_sample.sh -t sample_and_run58bash run_sample.sh -t sample_and_run
48```59```
60+ 
49该命令会:61该命令会:
62+ 
501. 自动生成ES接口631. 自动生成ES接口
512. 编译sample程序642. 编译sample程序
523. 生成dump图、运行图并输出计算结果653. 生成dump图、运行图并输出计算结果
53 66 
54执行成功后会看到:67执行成功后会看到:
68+ 
55```69```
56[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录70[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
57```71```
72+ 
58可通过data文件查看计算结果73可通过data文件查看计算结果
74+ 
59### 3.3、日志打印75### 3.3、日志打印
76+ 
60可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕77可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
78+ 
61```bash79```bash
62export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕80export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
63export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别81export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
64```82```
83+ 
65### 3.4、图编译流程中DUMP图84### 3.4、图编译流程中DUMP图
85+ 
66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下86可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
87+ 
67```bash88```bash
68export DUMP_GE_GRAPH=289export DUMP_GE_GRAPH=2
69```90```
70 91 
71## 4、核心概念介绍92## 4、核心概念介绍
72 93 
73-### 4.1、构图步骤如下:94+### 4.1、构图步骤如下
95+ 
74- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)96- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
75- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))97- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
76- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)98- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
77- 设置图输出(明确图的输出节点,作为计算结果的终点)99- 设置图输出(明确图的输出节点,作为计算结果的终点)
78 100 
79### 4.2、控制边(Control Edge)101### 4.2、控制边(Control Edge)
102+ 
80**概念说明:**103**概念说明:**
81控制边用于在计算图中指定节点的执行顺序,即使这些节点之间没有数据依赖关系。控制边不传递数据,只传递控制信号,确保源节点在目标节点之前执行。104控制边用于在计算图中指定节点的执行顺序,即使这些节点之间没有数据依赖关系。控制边不传递数据,只传递控制信号,确保源节点在目标节点之前执行。
82 105 
83**构图 API 特点:**106**构图 API 特点:**
107+ 
84- ES API 提供了 `AddControlEdge()` 方法,支持在 C++、C使用108- ES API 提供了 `AddControlEdge()` 方法,支持在 C++、C使用
85- 可以为一个目标节点添加多个源节点的控制依赖109- 可以为一个目标节点添加多个源节点的控制依赖
86 110 
@@ -133,6 +157,7 @@ EsCGraphPtr graph = EsBuildGraph(builder);
133// 6. 清理157// 6. 清理
134EsDestroyGraphBuilder(builder);158EsDestroyGraphBuilder(builder);
135```159```
160+ 
136---161---
137 162 
138### 5.3、C++ 层 API 示例163### 5.3、C++ 层 API 示例
@@ -23,7 +23,7 @@ cpp/
23 23 
24### 3.1. Prepare CANN Package24### 3.1. Prepare CANN Package
25 25 
26-- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)26+- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
27- Set environment variables (assuming packages are installed in /usr/local/Ascend/)27- Set environment variables (assuming packages are installed in /usr/local/Ascend/)
28 28 
29```bash29```bash
@@ -1,9 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用控制边进行构图,旨在帮助构图开发者快速理解控制边的概念和使用控制边进行构图5本样例使用控制边进行构图,旨在帮助构图开发者快速理解控制边的概念和使用控制边进行构图
5 6 
6## 2、目录结构7## 2、目录结构
8+ 
7```angular2html9```angular2html
8python/10python/
9├── src/11├── src/
@@ -16,56 +18,73 @@ python/
16## 3、使用方法18## 3、使用方法
17 19 
18### 3.1、准备cann包20### 3.1、准备cann包
21+ 
19- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
20- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
21```25```
22source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
23```27```
28+ 
24### 3.2、编译和执行29### 3.2、编译和执行
30+ 
25- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
26 32 
27```bash33```bash
28bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
29```35```
36+ 
30该命令会:37该命令会:
38+ 
311. 自动生成ES接口391. 自动生成ES接口
322. 编译sample程序402. 编译sample程序
333. 生成dump图并运行该图413. 生成dump图并运行该图
34 42 
35执行成功后会看到:43执行成功后会看到:
44+ 
36```45```
37[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
38```47```
48+ 
39#### 输出文件说明49#### 输出文件说明
40 50 
41执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
42- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
43 54 
44### 3.3、日志打印55### 3.3、日志打印
56+ 
45可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
46```bash59```bash
47export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
48export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
49```62```
63+ 
50### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
51可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
52```bash68```bash
53export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
54```70```
55 71 
56## 4、核心概念介绍72## 4、核心概念介绍
57 73 
58-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
59- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
60- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
61- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
62- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
63 80 
64### 4.2、控制边(Control Edge)81### 4.2、控制边(Control Edge)
82+ 
65**概念说明:**83**概念说明:**
66控制边用于在计算图中指定节点的执行顺序,即使这些节点之间没有数据依赖关系。控制边不传递数据,只传递控制信号,确保源节点在目标节点之前执行。84控制边用于在计算图中指定节点的执行顺序,即使这些节点之间没有数据依赖关系。控制边不传递数据,只传递控制信号,确保源节点在目标节点之前执行。
67 85 
68**构图 API 特点:**86**构图 API 特点:**
87+ 
69- ES API 提供了 `add_control_dependency()` 方法,支持在 Python中使用88- ES API 提供了 `add_control_dependency()` 方法,支持在 Python中使用
70- 可以为一个目标节点添加多个源节点的控制依赖89- 可以为一个目标节点添加多个源节点的控制依赖
71 90 
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1. Prepare CANN Package20### 3.1. Prepare CANN Package
21 21 
22-- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming packages are installed in /usr/local/Ascend/)23- Set environment variables (assuming packages are installed in /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,9 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用控制算子进行构图,旨在帮助构图开发者快速上手控制算子的定义和使用5本样例使用控制算子进行构图,旨在帮助构图开发者快速上手控制算子的定义和使用
5 6 
6## 2、目录结构7## 2、目录结构
8+ 
7```angular2html9```angular2html
8python/10python/
9├── src/11├── src/
@@ -16,58 +18,77 @@ python/
16## 3、使用方法18## 3、使用方法
17 19 
18### 3.1、准备cann包20### 3.1、准备cann包
21+ 
19- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
20- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
21```25```
22source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
23```27```
28+ 
24### 3.2、编译和执行29### 3.2、编译和执行
30+ 
25- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
26```bash33```bash
27bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
28```35```
36+ 
29该命令会:37该命令会:
38+ 
301. 自动生成ES接口391. 自动生成ES接口
312. 编译sample程序402. 编译sample程序
323. 生成dump图并运行该图413. 生成dump图并运行该图
33 42 
34执行成功后会看到:43执行成功后会看到:
44+ 
35```45```
36[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
37```47```
48+ 
38#### 输出文件说明49#### 输出文件说明
39 50 
40执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
41- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
42 54 
43### 3.3、日志打印55### 3.3、日志打印
56+ 
44可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
45```bash59```bash
46export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
47export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
48```62```
63+ 
49### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
50可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
51```bash68```bash
52export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
53```70```
54 71 
55## 4、核心概念介绍72## 4、核心概念介绍
56 73 
57-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
58- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
59- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
60- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
61- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
62 80 
63### 4.2、控制算子(Control Op)81### 4.2、控制算子(Control Op)
82+ 
64**概念说明:**83**概念说明:**
65控制算子是一类特殊的算子,用于实现控制流逻辑,如条件分支(If)等。84控制算子是一类特殊的算子,用于实现控制流逻辑,如条件分支(If)等。
66 85 
67**构图 API 特点:**86**构图 API 特点:**
87+ 
68- 控制算子通常要先构造一个或者多个子图;88- 控制算子通常要先构造一个或者多个子图;
69 89 
70例如 If 算子的原型如下所示,ES 构图生成的API是`If()`,支持在 Python 中使用90例如 If 算子的原型如下所示,ES 构图生成的API是`If()`,支持在 Python 中使用
91+ 
71```92```
72 REG_OP(If)93 REG_OP(If)
73 .INPUT(cond, TensorType::ALL())94 .INPUT(cond, TensorType::ALL())
@@ -77,14 +98,18 @@ export DUMP_GE_GRAPH=2
77 .GRAPH(else_branch)98 .GRAPH(else_branch)
78 .OP_END_FACTORY_REG(If)99 .OP_END_FACTORY_REG(If)
79```100```
101+ 
80其对应的函数原型为:102其对应的函数原型为:
103+ 
81- 函数名:If104- 函数名:If
82- 参数:共 5 个,依次为 cond, input, output_num, then_branch, else_branch105- 参数:共 5 个,依次为 cond, input, output_num, then_branch, else_branch
83- 返回值:输出 output106- 返回值:输出 output
84 107 
85**Python API中:**108**Python API中:**
109+ 
86```110```
87If(cond: Union[TensorHolder, TensorLike], input: List[Union[TensorHolder, TensorLike]], output_num: int, then_branch: Graph, else_branch: Graph) -> List[TensorHolder]:111If(cond: Union[TensorHolder, TensorLike], input: List[Union[TensorHolder, TensorLike]], output_num: int, then_branch: Graph, else_branch: Graph) -> List[TensorHolder]:
88```112```
113+ 
89注:114注:
901、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况1151、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1. Prepare CANN Package20### 3.1. Prepare CANN Package
21 21 
22-- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming packages are installed in /usr/local/Ascend/)23- Set environment variables (assuming packages are installed in /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用动态输入算子进行构图,旨在帮助构图开发者快速理解动态输入的定义和使用5本样例使用动态输入算子进行构图,旨在帮助构图开发者快速理解动态输入的定义和使用
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -11,58 +14,77 @@ python/
11├── README.md // README文件14├── README.md // README文件
12├── run_sample.sh // 执行脚本15├── run_sample.sh // 执行脚本
13```16```
17+ 
14## 3、使用方法18## 3、使用方法
15 19 
16### 3.1、准备cann包20### 3.1、准备cann包
21+ 
17- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
18- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
19```25```
20source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
21```27```
28+ 
22### 3.2、编译和执行29### 3.2、编译和执行
30+ 
23- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
24```bash33```bash
25bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
26```35```
36+ 
27该命令会:37该命令会:
38+ 
281. 自动生成ES接口391. 自动生成ES接口
292. 编译sample程序402. 编译sample程序
303. 生成dump图并运行该图413. 生成dump图并运行该图
31 42 
32执行成功后会看到:43执行成功后会看到:
44+ 
33```45```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```47```
48+ 
36#### 输出文件说明49#### 输出文件说明
37 50 
38执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
39- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
40 54 
41### 3.3、日志打印55### 3.3、日志打印
56+ 
42可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
43```bash59```bash
44export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
45export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
46```62```
63+ 
47### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
48可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
49```bash68```bash
50export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
51```70```
52 71 
53## 4、核心概念介绍72## 4、核心概念介绍
54 73 
55-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
56- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
57- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
58- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
59- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
60 80 
61### 4.2、动态输入81### 4.2、动态输入
82+ 
62**概念说明:**83**概念说明:**
63动态输入是指某些算子的输入个数不固定;例如 ConcatV2 算子,该算子为动态多输入算子84动态输入是指某些算子的输入个数不固定;例如 ConcatV2 算子,该算子为动态多输入算子
64 85 
65ConcatV2 算子的原型如下所示,ES 构图生成的API是`ConcatV2()`,支持在 Python 中使用86ConcatV2 算子的原型如下所示,ES 构图生成的API是`ConcatV2()`,支持在 Python 中使用
87+ 
66```bash88```bash
67 REG_OP(ConcatV2)89 REG_OP(ConcatV2)
68 .DYNAMIC_INPUT(x, TensorType({BasicType(), DT_BOOL, DT_STRING}))90 .DYNAMIC_INPUT(x, TensorType({BasicType(), DT_BOOL, DT_STRING}))
@@ -71,13 +93,17 @@ ConcatV2 算子的原型如下所示,ES 构图生成的API是`ConcatV2()`,
71 .ATTR(N, Int, 1)93 .ATTR(N, Int, 1)
72 .OP_END_FACTORY_REG(ConcatV2)94 .OP_END_FACTORY_REG(ConcatV2)
73```95```
96+ 
74其对应的函数原型为:97其对应的函数原型为:
98+ 
75- 函数名:ConcatV299- 函数名:ConcatV2
76- 参数:共 3 个,依次为 x, concat_dim, N100- 参数:共 3 个,依次为 x, concat_dim, N
77- 返回值:输出 y101- 返回值:输出 y
78 102 
79**Python API中:**103**Python API中:**
104+ 
80```105```
81ConcatV2(x: List[Union[TensorHolder, TensorLike]], concat_dim: Union[TensorHolder, TensorLike], *, N: int =1) -> TensorHolder:106ConcatV2(x: List[Union[TensorHolder, TensorLike]], concat_dim: Union[TensorHolder, TensorLike], *, N: int =1) -> TensorHolder:
82```107```
108+ 
83注: 1.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况109注: 1.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1. Prepare CANN Package20### 3.1. Prepare CANN Package
21 21 
22-- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Correctly install `toolkit` and `ops` packages through installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming packages are installed in /usr/local/Ascend/)23- Set environment variables (assuming packages are installed in /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用动态输出算子进行构图,旨在帮助构图开发者快速理解动态输出的定义和使用5本样例使用动态输出算子进行构图,旨在帮助构图开发者快速理解动态输出的定义和使用
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -15,57 +18,77 @@ python/
15## 3、使用方法18## 3、使用方法
16 19 
17### 3.1、准备cann包20### 3.1、准备cann包
21+ 
18- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
19- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
20```25```
21source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
22```27```
28+ 
23### 3.2、编译和执行29### 3.2、编译和执行
30+ 
24- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
25```bash33```bash
26bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
27```35```
36+ 
28该命令会:37该命令会:
38+ 
291. 自动生成ES接口391. 自动生成ES接口
302. 编译sample程序402. 编译sample程序
313. 生成dump图并运行该图413. 生成dump图并运行该图
32 42 
33执行成功后会看到:43执行成功后会看到:
44+ 
34```45```
35[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
36```47```
48+ 
37#### 输出文件说明49#### 输出文件说明
38 50 
39执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
40- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
54+ 
41### 3.3、日志打印55### 3.3、日志打印
56+ 
42可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
43```bash59```bash
44export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
45export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
46```62```
63+ 
47### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
48可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
49```bash68```bash
50export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
51```70```
52 71 
53## 4、核心概念介绍72## 4、核心概念介绍
54 73 
55-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
56- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
57- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
58- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
59- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
60 80 
61### 4.2、动态输出81### 4.2、动态输出
82+ 
62**概念说明:**83**概念说明:**
63动态输出是指某些算子的输出个数不固定;例如 Split 算子, 该算子为动态输出算子84动态输出是指某些算子的输出个数不固定;例如 Split 算子, 该算子为动态输出算子
64 85 
65**构图 API 特点:**86**构图 API 特点:**
87+ 
66- 需要一个参数来传递动态输出的个数88- 需要一个参数来传递动态输出的个数
67 89 
68例如 Split 算子的原型如下所示,ES 构图生成的API是`Split()`,支持在 Python 中使用90例如 Split 算子的原型如下所示,ES 构图生成的API是`Split()`,支持在 Python 中使用
91+ 
69```92```
70 REG_OP(Split)93 REG_OP(Split)
71 .INPUT(split_dim, TensorType({DT_INT32}))94 .INPUT(split_dim, TensorType({DT_INT32}))
@@ -80,7 +103,9 @@ export DUMP_GE_GRAPH=2
80 .REQUIRED_ATTR(num_split, Int)103 .REQUIRED_ATTR(num_split, Int)
81 .OP_END_FACTORY_REG(Split)104 .OP_END_FACTORY_REG(Split)
82```105```
106+ 
83其对应的函数原型为:107其对应的函数原型为:
108+ 
84- 函数名:Split()109- 函数名:Split()
85- 参数:共 4 个,依次为 split_dim, x, y_num, num_split110- 参数:共 4 个,依次为 split_dim, x, y_num, num_split
86- 返回值:输出 y111- 返回值:输出 y
@@ -88,8 +113,10 @@ export DUMP_GE_GRAPH=2
88注:因为当前 IR 定义中未显式描述“输入/属性 → 动态输出数量”的映射关系,导致构图 API 难以自动推导输出个数,因此需要手动指定输出数量;113注:因为当前 IR 定义中未显式描述“输入/属性 → 动态输出数量”的映射关系,导致构图 API 难以自动推导输出个数,因此需要手动指定输出数量;
89 114 
90**Python API中:**115**Python API中:**
116+ 
91```117```
92Split(split_dim: Union[TensorHolder, TensorLike], x: Union[TensorHolder, TensorLike], y_num: int, *, num_split: int) -> List[TensorHolder]:118Split(split_dim: Union[TensorHolder, TensorLike], x: Union[TensorHolder, TensorLike], y_num: int, *, num_split: int) -> List[TensorHolder]:
93```119```
120+ 
94注:121注:
951、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况1221、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1. Prepare CANN Package20### 3.1. Prepare CANN Package
21 21 
22-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming package is installed at /usr/local/Ascend/)23- Set environment variables (assuming package is installed at /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,9 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例演示如何使用HcomAllReduce算子集合通信进行构图,旨在帮助构图开发者快速理解集合通信定义和使用该类型算子进行构图。5本样例演示如何使用HcomAllReduce算子集合通信进行构图,旨在帮助构图开发者快速理解集合通信定义和使用该类型算子进行构图。
5 6 
6## 2、目录结构7## 2、目录结构
8+ 
7```angular2html9```angular2html
8cpp/10cpp/
9├── src/11├── src/
@@ -23,25 +25,34 @@ cpp/
23## 3、使用方法25## 3、使用方法
24 26 
25### 3.1、准备cann包27### 3.1、准备cann包
28+ 
26- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包29- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
27- 设置环境变量 (假设包安装在/usr/local/Ascend/)30- 设置环境变量 (假设包安装在/usr/local/Ascend/)
31+ 
28```32```
29source /usr/local/Ascend/cann/set_env.sh33source /usr/local/Ascend/cann/set_env.sh
30```34```
31 35 
32### 3.2、编译和执行36### 3.2、编译和执行
37+ 
33#### 1.2.1 生成 es 接口与构建图进行DUMP38#### 1.2.1 生成 es 接口与构建图进行DUMP
39+ 
34只需运行下述命令即可完成清理、生成接口、构图和DUMP图:40只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
41+ 
35```bash42```bash
36bash run_sample.sh43bash run_sample.sh
37```44```
45+ 
38当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:46当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
47+ 
39```48```
40[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示49[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
41```50```
51+ 
42**1.2.2 输出文件说明**52**1.2.2 输出文件说明**
43 53 
44执行成功后会在当前目录生成以下文件:54执行成功后会在当前目录生成以下文件:
55+ 
45- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看56- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
46 57 
47#### 1.2.3 构建图并执行58#### 1.2.3 构建图并执行
@@ -49,6 +60,7 @@ bash run_sample.sh
49**重要前提:确保您的系统有至少2个可用的NPU设备**60**重要前提:确保您的系统有至少2个可用的NPU设备**
50 61 
51**平台支持说明:**62**平台支持说明:**
63+ 
52- A2 平台:`lspci | grep d802` 有输出,脚本自动使用 `rank_table/a2/rank_table_2p.json`64- A2 平台:`lspci | grep d802` 有输出,脚本自动使用 `rank_table/a2/rank_table_2p.json`
53- A5 平台:`lspci | grep d806` 有输出,脚本会报错退出(不支持此形态)65- A5 平台:`lspci | grep d806` 有输出,脚本会报错退出(不支持此形态)
54- 其他平台:当前版本暂不支持,会在脚本中直接报错退出66- 其他平台:当前版本暂不支持,会在脚本中直接报错退出
@@ -56,11 +68,13 @@ bash run_sample.sh
56除了基本的图构建和dump功能外,本示例还支持在多卡上实际执行TP图。68除了基本的图构建和dump功能外,本示例还支持在多卡上实际执行TP图。
57 69 
58**使用方法:**70**使用方法:**
71+ 
59```bash72```bash
60bash run_sample.sh -t sample_and_run73bash run_sample.sh -t sample_and_run
61```74```
62 75 
63该命令会:76该命令会:
77+ 
641. 自动生成ES接口781. 自动生成ES接口
652. 编译sample程序792. 编译sample程序
663. 自动配置 rank table 和环境变量(`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`)803. 自动配置 rank table 和环境变量(`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`)
@@ -68,32 +82,40 @@ bash run_sample.sh -t sample_and_run
685. 使用HcomAllReduce进行卡间数据同步825. 使用HcomAllReduce进行卡间数据同步
69 83 
70**注意事项:**84**注意事项:**
85+ 
71- 脚本会通过 `lspci` 自动识别硬件并选择对应 rank table(当前仅 A2 使用 `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)86- 脚本会通过 `lspci` 自动识别硬件并选择对应 rank table(当前仅 A2 使用 `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)
72- 如需使用其他设备(如2,3或4,5),请修改对应平台目录下 rank table 文件中的 `device_id`87- 如需使用其他设备(如2,3或4,5),请修改对应平台目录下 rank table 文件中的 `device_id`
73- `run_sample.sh` 会自动设置所有必需的环境变量,无需手动配置88- `run_sample.sh` 会自动设置所有必需的环境变量,无需手动配置
74 89 
75执行成功后会看到:90执行成功后会看到:
91+ 
76```92```
77[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录93[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
78```94```
95+ 
79可通过data文件查看计算结果96可通过data文件查看计算结果
80 97 
81### 3.3、日志打印98### 3.3、日志打印
99+ 
82可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕100可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
101+ 
83```bash102```bash
84export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕103export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
85export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别104export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
86```105```
87 106 
88### 3.4、图编译流程中DUMP图107### 3.4、图编译流程中DUMP图
108+ 
89可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下109可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
110+ 
90```bash111```bash
91export DUMP_GE_GRAPH=2112export DUMP_GE_GRAPH=2
92```113```
93 114 
94## 4、核心概念介绍115## 4、核心概念介绍
95 116 
96-### 4.1、构图步骤如下:117+### 4.1、构图步骤如下
118+ 
97- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)119- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
98- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))120- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
99- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)121- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
@@ -103,12 +125,14 @@ export DUMP_GE_GRAPH=2
103 125 
104**环境变量说明:**126**环境变量说明:**
105运行多卡示例时,脚本会自动设置以下环境变量:127运行多卡示例时,脚本会自动设置以下环境变量:
128+ 
106- `RANK_ID`:逻辑进程编号(本示例中为 0 或 1)129- `RANK_ID`:逻辑进程编号(本示例中为 0 或 1)
107- `DEVICE_ID`:物理设备ID(本示例中为 0 或 1)130- `DEVICE_ID`:物理设备ID(本示例中为 0 或 1)
108- `RANK_TABLE_FILE`:rank table 配置文件路径(当前仅 A2: `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)131- `RANK_TABLE_FILE`:rank table 配置文件路径(当前仅 A2: `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)
109- 关于`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`的详细介绍可以参考 [以a2为例:rank table配置资源信息](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/850alpha002/hccl/hcclug/hcclug_000067.html)132- 关于`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`的详细介绍可以参考 [以a2为例:rank table配置资源信息](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/850alpha002/hccl/hcclug/hcclug_000067.html)
110 133 
111**GE 初始化配置:**134**GE 初始化配置:**
135+ 
112```cpp136```cpp
113std::map<ge::AscendString, ge::AscendString> config = {137std::map<ge::AscendString, ge::AscendString> config = {
114 {"ge.exec.deviceId", device_id}, // 来自环境变量 DEVICE_ID138 {"ge.exec.deviceId", device_id}, // 来自环境变量 DEVICE_ID
@@ -119,15 +143,18 @@ std::map<ge::AscendString, ge::AscendString> config = {
119```143```
120 144 
121### 4.3、TP图构图145### 4.3、TP图构图
146+ 
122**概念说明:**147**概念说明:**
123TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图结构。本样例演示了如何使用ES算子构建包含集合通信算子的TP图,实现多卡间的数据同步和并行计算。148TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图结构。本样例演示了如何使用ES算子构建包含集合通信算子的TP图,实现多卡间的数据同步和并行计算。
124 149 
125**构图 API 特点:**150**构图 API 特点:**
151+ 
126- 支持多算子组合构图,包括Flash Attention、矩阵乘法、集合通信等算子152- 支持多算子组合构图,包括Flash Attention、矩阵乘法、集合通信等算子
127- 使用HcomAllReduce算子实现多卡间数据聚合,需要配置rank table文件153- 使用HcomAllReduce算子实现多卡间数据聚合,需要配置rank table文件
128- 支持数据类型转换,可在图内部进行FP32到FP16的转换以提升性能154- 支持数据类型转换,可在图内部进行FP32到FP16的转换以提升性能
129 155 
130例如 HcomAllReduce 算子原型如下所示,ES 构图生成的API是 HcomAllReduce(C++)或 EsHcomAllReduce(C)156例如 HcomAllReduce 算子原型如下所示,ES 构图生成的API是 HcomAllReduce(C++)或 EsHcomAllReduce(C)
157+ 
131```158```
132 REG_OP(HcomAllReduce)159 REG_OP(HcomAllReduce)
133 .INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64}))160 .INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64}))
@@ -138,17 +165,23 @@ TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图
138 .ATTR(fusion_id, Int, -1)165 .ATTR(fusion_id, Int, -1)
139 .OP_END_FACTORY_REG(HcomAllReduce)166 .OP_END_FACTORY_REG(HcomAllReduce)
140```167```
168+ 
141其对应的函数原型为:169其对应的函数原型为:
170+ 
142- 函数名:HcomAllReduce(C++)或 EsHcomAllReduce(C)171- 函数名:HcomAllReduce(C++)或 EsHcomAllReduce(C)
143- 参数:共 5 个,依次为 x, reduction, group, fusion(可选,默认1), fusion_id(可选,默认-1)172- 参数:共 5 个,依次为 x, reduction, group, fusion(可选,默认1), fusion_id(可选,默认-1)
144- 返回值:输出 y173- 返回值:输出 y
145 174 
146**C API中:**175**C API中:**
176+ 
147```177```
148EsCTensorHolder *EsHcomAllReduce(EsCTensorHolder *x, const char *reduction, const char *group, int64_t fusion, int64_t fusion_id);178EsCTensorHolder *EsHcomAllReduce(EsCTensorHolder *x, const char *reduction, const char *group, int64_t fusion, int64_t fusion_id);
149```179```
180+ 
150**C++ API:**181**C++ API:**
182+ 
151```183```
152EsTensorHolder HcomAllReduce(const EsTensorHolder &x, const char *reduction, const char *group, int64_t fusion=1, int64_t fusion_id=-1);184EsTensorHolder HcomAllReduce(const EsTensorHolder &x, const char *reduction, const char *group, int64_t fusion=1, int64_t fusion_id=-1);
153```185```
186+ 
154注:C++ API中fusion和fusion_id为可选参数,具有默认值,通常可以省略187注:C++ API中fusion和fusion_id为可选参数,具有默认值,通常可以省略
@@ -26,7 +26,7 @@ cpp/
26 26 
27### 3.1. Prepare CANN Package27### 3.1. Prepare CANN Package
28 28 
29-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)29+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
30- Set environment variables (assuming package is installed at /usr/local/Ascend/)30- Set environment variables (assuming package is installed at /usr/local/Ascend/)
31 31 
32```bash32```bash
@@ -1,9 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例演示如何使用HcomAllReduce算子集合通信进行构图,旨在帮助构图开发者快速理解集合通信定义和使用该类型算子进行构图。5本样例演示如何使用HcomAllReduce算子集合通信进行构图,旨在帮助构图开发者快速理解集合通信定义和使用该类型算子进行构图。
5 6 
6## 2、目录结构7## 2、目录结构
8+ 
7```angular2html9```angular2html
8python/10python/
9├── src/11├── src/
@@ -19,8 +21,10 @@ python/
19## 3、使用方法21## 3、使用方法
20 22 
21### 3.1、准备cann包23### 3.1、准备cann包
24+ 
22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包25- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
23- 设置环境变量 (假设包安装在/usr/local/Ascend/)26- 设置环境变量 (假设包安装在/usr/local/Ascend/)
27+ 
24```28```
25source /usr/local/Ascend/cann/set_env.sh29source /usr/local/Ascend/cann/set_env.sh
26```30```
@@ -30,6 +34,7 @@ source /usr/local/Ascend/cann/set_env.sh
30**重要前提:确保您的系统有至少2个可用的NPU设备**34**重要前提:确保您的系统有至少2个可用的NPU设备**
31 35 
32**平台支持说明:**36**平台支持说明:**
37+ 
33- A2 平台:`lspci | grep d802` 有输出,脚本自动使用 `rank_table/a2/rank_table_2p.json`38- A2 平台:`lspci | grep d802` 有输出,脚本自动使用 `rank_table/a2/rank_table_2p.json`
34- A5 平台:`lspci | grep d806` 有输出,脚本会报错退出(不支持此形态)39- A5 平台:`lspci | grep d806` 有输出,脚本会报错退出(不支持此形态)
35- 其他平台:当前版本暂不支持,会在脚本中直接报错退出40- 其他平台:当前版本暂不支持,会在脚本中直接报错退出
@@ -37,21 +42,25 @@ source /usr/local/Ascend/cann/set_env.sh
37注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)42注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
38 43 
39**使用方法:**44**使用方法:**
45+ 
40```bash46```bash
41bash run_sample.sh -t sample_and_run_python47bash run_sample.sh -t sample_and_run_python
42```48```
43 49 
44该命令会:50该命令会:
51+ 
451. 自动生成ES接口521. 自动生成ES接口
462. 编译sample程序532. 编译sample程序
473. dump图到当前目录543. dump图到当前目录
484. 在2个NPU设备上并行运行TP图(设备ID从 rank_table 自动读取)554. 在2个NPU设备上并行运行TP图(设备ID从 rank_table 自动读取)
49 56 
50**注意事项:**57**注意事项:**
58+ 
51- 脚本会通过 `lspci` 自动识别硬件并选择对应 rank table(当前仅 A2 使用 `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)59- 脚本会通过 `lspci` 自动识别硬件并选择对应 rank table(当前仅 A2 使用 `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)
52- 如需使用其他设备(如2,3或4,5),请修改对应平台目录下 rank table 文件中的 `device_id`60- 如需使用其他设备(如2,3或4,5),请修改对应平台目录下 rank table 文件中的 `device_id`
53 61 
54执行成功后会看到:62执行成功后会看到:
63+ 
55```64```
56[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示65[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
57```66```
@@ -59,23 +68,30 @@ bash run_sample.sh -t sample_and_run_python
59#### 输出文件说明68#### 输出文件说明
60 69 
61执行成功后会在当前目录生成以下文件:70执行成功后会在当前目录生成以下文件:
71+ 
62- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看72- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
63 73 
64### 3.3、日志打印74### 3.3、日志打印
75+ 
65可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕76可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
77+ 
66```bash78```bash
67export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕79export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
68export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别80export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
69```81```
82+ 
70### 3.4、图编译流程中DUMP图83### 3.4、图编译流程中DUMP图
84+ 
71可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下85可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
86+ 
72```bash87```bash
73export DUMP_GE_GRAPH=288export DUMP_GE_GRAPH=2
74```89```
75 90 
76## 4、核心概念介绍91## 4、核心概念介绍
77 92 
78-### 4.1、构图步骤如下:93+### 4.1、构图步骤如下
94+ 
79- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)95- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
80- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))96- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
81- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)97- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
@@ -85,12 +101,14 @@ export DUMP_GE_GRAPH=2
85 101 
86**环境变量说明:**102**环境变量说明:**
87运行多卡示例时,脚本会自动设置以下环境变量:103运行多卡示例时,脚本会自动设置以下环境变量:
104+ 
88- `RANK_ID`:逻辑进程编号(本示例中为 0 或 1)105- `RANK_ID`:逻辑进程编号(本示例中为 0 或 1)
89- `DEVICE_ID`:物理设备ID(本示例中为 0 或 1)106- `DEVICE_ID`:物理设备ID(本示例中为 0 或 1)
90- `RANK_TABLE_FILE`:rank table 配置文件路径(当前仅 A2: `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)107- `RANK_TABLE_FILE`:rank table 配置文件路径(当前仅 A2: `rank_table/a2/rank_table_2p.json`;A5 不支持此形态)
91- 关于`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`的详细介绍可以参考 [以a2为例:rank table配置资源信息](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/850alpha002/hccl/hcclug/hcclug_000067.html)108- 关于`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`的详细介绍可以参考 [以a2为例:rank table配置资源信息](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/850alpha002/hccl/hcclug/hcclug_000067.html)
92 109 
93**GE 初始化配置:**110**GE 初始化配置:**
111+ 
94```python112```python
95config = {113config = {
96 "ge.exec.deviceId": str(device_id), # 来自环境变量 DEVICE_ID114 "ge.exec.deviceId": str(device_id), # 来自环境变量 DEVICE_ID
@@ -101,10 +119,12 @@ config = {
101```119```
102 120 
103### 4.3、TP图构图121### 4.3、TP图构图
122+ 
104**概念说明:**123**概念说明:**
105TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图结构。本样例演示了如何使用ES算子构建包含集合通信算子的TP图,实现多卡间的数据同步和并行计算。124TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图结构。本样例演示了如何使用ES算子构建包含集合通信算子的TP图,实现多卡间的数据同步和并行计算。
106 125 
107HcomAllReduce 算子原型如下所示,ES 构图生成的API是`HcomAllReduce()`,支持在 Python 中使用126HcomAllReduce 算子原型如下所示,ES 构图生成的API是`HcomAllReduce()`,支持在 Python 中使用
127+ 
108```128```
109 REG_OP(HcomAllReduce)129 REG_OP(HcomAllReduce)
110 .INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64}))130 .INPUT(x, TensorType({DT_FLOAT, DT_INT32, DT_INT8, DT_INT16, DT_FLOAT16, DT_INT64}))
@@ -115,13 +135,17 @@ HcomAllReduce 算子原型如下所示,ES 构图生成的API是`HcomAllReduce(
115 .ATTR(fusion_id, Int, -1)135 .ATTR(fusion_id, Int, -1)
116 .OP_END_FACTORY_REG(HcomAllReduce)136 .OP_END_FACTORY_REG(HcomAllReduce)
117```137```
138+ 
118其对应的函数原型为:139其对应的函数原型为:
140+ 
119- 函数名:HcomAllReduce141- 函数名:HcomAllReduce
120- 参数:共 5 个,依次为 x, reduction, group, fusion(可选,默认1), fusion_id(可选,默认-1)142- 参数:共 5 个,依次为 x, reduction, group, fusion(可选,默认1), fusion_id(可选,默认-1)
121- 返回值:输出 y143- 返回值:输出 y
122 144 
123**Python API中:**145**Python API中:**
146+ 
124```147```
125HcomAllReduce(x: TensorHolder, *, reduction: str, group: str, fusion: int = 1, fusion_id: int = -1) -> TensorHolder148HcomAllReduce(x: TensorHolder, *, reduction: str, group: str, fusion: int = 1, fusion_id: int = -1) -> TensorHolder
126```149```
150+ 
127注: reduction、group为必选关键字参数,fusion和fusion_id为可选参数,具有默认值151注: reduction、group为必选关键字参数,fusion和fusion_id为可选参数,具有默认值
@@ -22,7 +22,7 @@ python/
22 22 
23### 3.1. Prepare CANN Package23### 3.1. Prepare CANN Package
24 24 
25-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)25+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
26- Set environment variables (assuming package is installed at /usr/local/Ascend/)26- Set environment variables (assuming package is installed at /usr/local/Ascend/)
27 27 
28```bash28```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用Matmul算子普通属性进行构图,旨在帮助构图开发者快速理解普通属性的定义和使用5本样例使用Matmul算子普通属性进行构图,旨在帮助构图开发者快速理解普通属性的定义和使用
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -13,61 +16,81 @@ python/
13```16```
14 17 
15## 3、使用方法18## 3、使用方法
19+ 
16### 3.1、准备cann包20### 3.1、准备cann包
21+ 
17- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
18- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
19```25```
20source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
21```27```
28+ 
22### 3.2、编译和执行29### 3.2、编译和执行
30+ 
23- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
24```bash33```bash
25bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
26```35```
36+ 
27该命令会:37该命令会:
38+ 
281. 自动生成ES接口391. 自动生成ES接口
292. 编译sample程序402. 编译sample程序
303. 生成dump图并运行该图413. 生成dump图并运行该图
31 42 
32执行成功后会看到:43执行成功后会看到:
44+ 
33```45```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```47```
48+ 
36#### 输出文件说明49#### 输出文件说明
37 50 
38执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
39- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
40 54 
41### 3.3、日志打印55### 3.3、日志打印
56+ 
42可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
43```bash59```bash
44export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
45export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
46```62```
63+ 
47### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
48可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
49```bash68```bash
50export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
51```70```
52 71 
53## 4、核心概念介绍72## 4、核心概念介绍
54 73 
55-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
56- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
57- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
58- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
59- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
60 80 
61### 4.2、普通属性(Normal Attributes)81### 4.2、普通属性(Normal Attributes)
82+ 
62**概念说明:**83**概念说明:**
63普通属性是算子的配置参数,用于控制算子的行为;属性值在构图时确定,不会在运行时改变。84普通属性是算子的配置参数,用于控制算子的行为;属性值在构图时确定,不会在运行时改变。
64 85 
65**构图 API 特点:**86**构图 API 特点:**
87+ 
66- 属性值必须在构图时确定,不能是运行时变量88- 属性值必须在构图时确定,不能是运行时变量
67- 如果使用默认值,可以省略对应参数(使用默认值)或显式传入89- 如果使用默认值,可以省略对应参数(使用默认值)或显式传入
68- ES API 会根据属性类型进行类型检查,确保传入的值类型正确90- ES API 会根据属性类型进行类型检查,确保传入的值类型正确
69 91 
70例如 MatMul 算子原型如下所示,ES 构图生成的API是`MatMul()`,支持在 Python 层使用92例如 MatMul 算子原型如下所示,ES 构图生成的API是`MatMul()`,支持在 Python 层使用
93+ 
71```bash94```bash
72 REG_OP(MatMul)95 REG_OP(MatMul)
73 .INPUT(x1, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16, DT_HIFLOAT8}))96 .INPUT(x1, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT32, DT_BF16, DT_HIFLOAT8}))
@@ -78,14 +101,18 @@ export DUMP_GE_GRAPH=2
78 .ATTR(transpose_x2, Bool, false)101 .ATTR(transpose_x2, Bool, false)
79 .OP_END_FACTORY_REG(MatMul)102 .OP_END_FACTORY_REG(MatMul)
80```103```
104+ 
81其对应的函数原型为:105其对应的函数原型为:
106+ 
82- 函数名:MatMul107- 函数名:MatMul
83- 参数:共 5 个,依次为 x1, x2, bias, transpose_x1, transpose_x2108- 参数:共 5 个,依次为 x1, x2, bias, transpose_x1, transpose_x2
84- 返回值:输出 y109- 返回值:输出 y
85 110 
86**Python API中:**111**Python API中:**
112+ 
87```113```
88Matmul(x1: Union[TensorHolder, TensorLike], x2: Union[TensorHolder, TensorLike], bias: Optional[Union[TensorHolder, TensorLike]] = None, *, transpose_x1: bool = False, transpose_x2: bool = False) -> TensorHolder:114Matmul(x1: Union[TensorHolder, TensorLike], x2: Union[TensorHolder, TensorLike], bias: Optional[Union[TensorHolder, TensorLike]] = None, *, transpose_x1: bool = False, transpose_x2: bool = False) -> TensorHolder:
89```115```
116+ 
90注:117注:
911、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况1181、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1. Prepare CANN Package20### 3.1. Prepare CANN Package
21 21 
22-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming package is installed at /usr/local/Ascend/)23- Set environment variables (assuming package is installed at /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用Relu算子普通输入进行构图,旨在帮助构图开发者快速理解普通输入的定义和使用该类型算子进行构图5本样例使用Relu算子普通输入进行构图,旨在帮助构图开发者快速理解普通输入的定义和使用该类型算子进行构图
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -13,59 +16,79 @@ python/
13```16```
14 17 
15## 3、使用方法18## 3、使用方法
19+ 
16### 3.1、准备cann包20### 3.1、准备cann包
21+ 
17- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
18- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
19```25```
20source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
21```27```
28+ 
22### 3.2、编译和执行29### 3.2、编译和执行
30+ 
23- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
24```bash33```bash
25bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
26```35```
36+ 
27该命令会:37该命令会:
38+ 
281. 自动生成ES接口391. 自动生成ES接口
292. 编译sample程序402. 编译sample程序
303. 生成dump图并运行该图413. 生成dump图并运行该图
31 42 
32执行成功后会看到:43执行成功后会看到:
44+ 
33```45```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```47```
48+ 
36#### 输出文件说明49#### 输出文件说明
37 50 
38执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
39- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
40 54 
41### 3.3、日志打印55### 3.3、日志打印
56+ 
42可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
43```bash59```bash
44export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
45export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
46```62```
63+ 
47### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
48可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
49```bash68```bash
50export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
51```70```
52 71 
53## 4、核心概念介绍72## 4、核心概念介绍
54 73 
55-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
56- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
57- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
58- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
59- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
60 80 
61-### 4.2、普通输入:81+### 4.2、普通输入
82+ 
62**概念说明:**83**概念说明:**
63普通输入是指算子的输入为必传输入且输入数量固定84普通输入是指算子的输入为必传输入且输入数量固定
64 85 
65**构图 API 特点:**86**构图 API 特点:**
87+ 
66- 输入类型必须匹配算子注册时声明的类型约束,ES API 会在构图时进行类型检查88- 输入类型必须匹配算子注册时声明的类型约束,ES API 会在构图时进行类型检查
67 89 
68例如 Relu 算子原型如下所示,ES 构图生成的API是`Relu()`,支持在 Python 层使用90例如 Relu 算子原型如下所示,ES 构图生成的API是`Relu()`,支持在 Python 层使用
91+ 
69```92```
70 REG_OP(Relu)93 REG_OP(Relu)
71 .INPUT(x, TensorType({DT_FLOAT, DT_FLOAT16, DT_DOUBLE,94 .INPUT(x, TensorType({DT_FLOAT, DT_FLOAT16, DT_DOUBLE,
@@ -76,12 +99,15 @@ export DUMP_GE_GRAPH=2
76 DT_UINT8, DT_UINT16, DT_QINT8, DT_BF16}))99 DT_UINT8, DT_UINT16, DT_QINT8, DT_BF16}))
77 .OP_END_FACTORY_REG(Relu)100 .OP_END_FACTORY_REG(Relu)
78```101```
102+ 
79其对应的函数原型为:103其对应的函数原型为:
104+ 
80- 函数名:Relu105- 函数名:Relu
81- 参数:共 1 个,为 x106- 参数:共 1 个,为 x
82- 返回值:输出 y107- 返回值:输出 y
83 108 
84**Python API中:**109**Python API中:**
110+ 
85```111```
86Relu(x: TensorHolder) -> TensorHolder:112Relu(x: TensorHolder) -> TensorHolder:
87```113```
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1. Prepare CANN Package20### 3.1. Prepare CANN Package
21 21 
22-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming package is installed at /usr/local/Ascend/)23- Set environment variables (assuming package is installed at /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义5本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7cpp/10cpp/
8├── src/11├── src/
@@ -20,24 +23,32 @@ cpp/
20## 3、使用方法23## 3、使用方法
21 24 
22### 3.1、准备cann包25### 3.1、准备cann包
26+ 
23- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包27- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
24- 设置环境变量 (假设包安装在/usr/local/Ascend/)28- 设置环境变量 (假设包安装在/usr/local/Ascend/)
29+ 
25```30```
26source /usr/local/Ascend/cann/set_env.sh31source /usr/local/Ascend/cann/set_env.sh
27```32```
33+ 
28### 3.2、编译和执行34### 3.2、编译和执行
29 35 
30只需运行下述命令即可完成清理、生成接口、构图和DUMP图:36只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
37+ 
31```bash38```bash
32bash run_sample.sh39bash run_sample.sh
33```40```
41+ 
34当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:42当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
43+ 
35```44```
36[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示45[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
37```46```
47+ 
38#### 输出文件说明48#### 输出文件说明
39 49 
40执行成功后会在当前目录生成以下文件:50执行成功后会在当前目录生成以下文件:
51+ 
41- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看52- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
42 53 
43#### 构建图并执行54#### 构建图并执行
@@ -47,39 +58,52 @@ bash run_sample.sh
47```bash58```bash
48bash run_sample.sh -t sample_and_run59bash run_sample.sh -t sample_and_run
49```60```
61+ 
50该命令会:62该命令会:
63+ 
511. 自动生成ES接口641. 自动生成ES接口
522. 编译sample程序652. 编译sample程序
533. 生成dump图、运行图并输出计算结果663. 生成dump图、运行图并输出计算结果
54 67 
55执行成功后会看到:68执行成功后会看到:
69+ 
56```70```
57[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录71[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
58```72```
73+ 
59可通过data文件查看计算结果74可通过data文件查看计算结果
75+ 
60### 3.3、日志打印76### 3.3、日志打印
77+ 
61可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕78可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
79+ 
62```bash80```bash
63export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕81export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
64export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别82export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
65```83```
84+ 
66### 3.4、图编译流程中DUMP图85### 3.4、图编译流程中DUMP图
86+ 
67可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下87可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
88+ 
68```bash89```bash
69export DUMP_GE_GRAPH=290export DUMP_GE_GRAPH=2
70```91```
71 92 
72## 4、核心概念介绍93## 4、核心概念介绍
73 94 
74-### 4.1、构图步骤如下:95+### 4.1、构图步骤如下
96+ 
75- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)97- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
76- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))98- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
77- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)99- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
78- 设置图输出(明确图的输出节点,作为计算结果的终点)100- 设置图输出(明确图的输出节点,作为计算结果的终点)
79 101 
80### 4.2、操作符重载102### 4.2、操作符重载
103+ 
81**概念说明:**104**概念说明:**
82操作符重载是 ES API 提供的语法糖,使构图代码更加简洁和直观105操作符重载是 ES API 提供的语法糖,使构图代码更加简洁和直观
83 106 
84**构图 API 特点:**107**构图 API 特点:**
108+ 
85- 操作符重载保持与函数调用相同的类型检查和约束109- 操作符重载保持与函数调用相同的类型检查和约束
@@ -24,7 +24,7 @@ cpp/
24 24 
25### 3.1. Prepare CANN Package25### 3.1. Prepare CANN Package
26 26 
27-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)27+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
28- Set environment variables (assuming package is installed at /usr/local/Ascend/)28- Set environment variables (assuming package is installed at /usr/local/Ascend/)
29 29 
30```bash30```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义5本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -13,54 +16,73 @@ python/
13```16```
14 17 
15## 3、使用方法18## 3、使用方法
19+ 
16### 3.1、准备cann包20### 3.1、准备cann包
21+ 
17- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
18- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
19```25```
20source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
21```27```
28+ 
22### 3.2、编译和执行29### 3.2、编译和执行
30+ 
23- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
24```bash33```bash
25bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
26```35```
36+ 
27该命令会:37该命令会:
38+ 
281. 自动生成ES接口391. 自动生成ES接口
292. 编译sample程序402. 编译sample程序
303. 生成dump图并运行该图413. 生成dump图并运行该图
31 42 
32执行成功后会看到:43执行成功后会看到:
44+ 
33```45```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```47```
48+ 
36#### 输出文件说明49#### 输出文件说明
37 50 
38执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
39- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
40 54 
41### 3.3、日志打印55### 3.3、日志打印
56+ 
42可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
43```bash59```bash
44export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
45export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
46```62```
63+ 
47### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
48可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
49```bash68```bash
50export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
51```70```
52 71 
53## 4、核心概念介绍72## 4、核心概念介绍
54 73 
55-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
56- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
57- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
58- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
59- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
60 80 
61### 4.2、操作符重载81### 4.2、操作符重载
82+ 
62**概念说明:**83**概念说明:**
63操作符重载是 ES API 提供的语法糖,针对AI算子做语法封装,使构图代码更加简洁和直观84操作符重载是 ES API 提供的语法糖,针对AI算子做语法封装,使构图代码更加简洁和直观
64 85 
65**构图 API 特点:**86**构图 API 特点:**
87+ 
66- 操作符重载保持与函数调用相同的类型检查和约束88- 操作符重载保持与函数调用相同的类型检查和约束
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1. Prepare CANN Package20### 3.1. Prepare CANN Package
21 21 
22-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming package is installed at /usr/local/Ascend/)23- Set environment variables (assuming package is installed at /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,12 +1,14 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义。5本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义。
5与 `operator_overload` 不同,本目录在执行阶段使用 `Session::RunGraphWithStreamAsync` 接口。6与 `operator_overload` 不同,本目录在执行阶段使用 `Session::RunGraphWithStreamAsync` 接口。
6本样例仅保留 `copy` 模式:显式执行 `aclrtMalloc + aclrtMemcpy`。7本样例仅保留 `copy` 模式:显式执行 `aclrtMalloc + aclrtMemcpy`。
7关于异步执行更多信息,请参考 [异步执行](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/850/graph/graphdevg/atlasag_25_0035.html)。8关于异步执行更多信息,请参考 [异步执行](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/850/graph/graphdevg/atlasag_25_0035.html)。
8 9 
9## 2、目录结构10## 2、目录结构
11+ 
10```angular2html12```angular2html
11cpp/13cpp/
12├── src/14├── src/
@@ -23,24 +25,32 @@ cpp/
23## 3、使用方法25## 3、使用方法
24 26 
25### 3.1、准备cann包27### 3.1、准备cann包
28+ 
26- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包29- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
27- 设置环境变量 (假设包安装在/usr/local/Ascend/)30- 设置环境变量 (假设包安装在/usr/local/Ascend/)
31+ 
28```32```
29source /usr/local/Ascend/cann/set_env.sh33source /usr/local/Ascend/cann/set_env.sh
30```34```
35+ 
31### 3.2、编译和执行36### 3.2、编译和执行
32 37 
33只需运行下述命令即可完成清理、生成接口、构图和DUMP图:38只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
39+ 
34```bash40```bash
35bash run_sample.sh41bash run_sample.sh
36```42```
43+ 
37当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:44当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
45+ 
38```46```
39[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示47[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
40```48```
49+ 
41#### 输出文件说明50#### 输出文件说明
42 51 
43执行成功后会在当前目录生成以下文件:52执行成功后会在当前目录生成以下文件:
53+ 
44- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看54- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
45 55 
46#### 构建图并执行56#### 构建图并执行
@@ -50,42 +60,56 @@ bash run_sample.sh
50```bash60```bash
51bash run_sample.sh -t sample_and_run61bash run_sample.sh -t sample_and_run
52```62```
63+ 
53该命令会:64该命令会:
65+ 
541. 自动生成ES接口661. 自动生成ES接口
552. 编译sample程序672. 编译sample程序
563. 生成dump图、运行图并输出计算结果683. 生成dump图、运行图并输出计算结果
57 69 
58执行成功后会看到:70执行成功后会看到:
71+ 
59```72```
60[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录73[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
61```74```
75+ 
62可通过data文件查看计算结果76可通过data文件查看计算结果
63 77 
64#### 运行模式说明78#### 运行模式说明
79+ 
65异步样例固定为 `copy` 模式(显式拷贝)80异步样例固定为 `copy` 模式(显式拷贝)
81+ 
66### 3.3、日志打印82### 3.3、日志打印
83+ 
67可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕84可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
85+ 
68```bash86```bash
69export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕87export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
70export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别88export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
71```89```
90+ 
72### 3.4、图编译流程中DUMP图91### 3.4、图编译流程中DUMP图
92+ 
73可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下93可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
94+ 
74```bash95```bash
75export DUMP_GE_GRAPH=296export DUMP_GE_GRAPH=2
76```97```
77 98 
78## 4、核心概念介绍99## 4、核心概念介绍
79 100 
80-### 4.1、构图步骤如下:101+### 4.1、构图步骤如下
102+ 
81- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)103- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
82- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))104- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
83- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)105- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
84- 设置图输出(明确图的输出节点,作为计算结果的终点)106- 设置图输出(明确图的输出节点,作为计算结果的终点)
85 107 
86### 4.2、操作符重载108### 4.2、操作符重载
109+ 
87**概念说明:**110**概念说明:**
88操作符重载是 ES API 提供的语法糖,使构图代码更加简洁和直观111操作符重载是 ES API 提供的语法糖,使构图代码更加简洁和直观
89 112 
90**构图 API 特点:**113**构图 API 特点:**
114+ 
91- 操作符重载保持与函数调用相同的类型检查和约束115- 操作符重载保持与函数调用相同的类型检查和约束
@@ -26,7 +26,7 @@ cpp/
26 26 
27### 3.1. Prepare CANN Package27### 3.1. Prepare CANN Package
28 28 
29-- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)29+- Install `toolkit` and `ops` packages correctly following [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
30- Set environment variables (assuming package is installed at /usr/local/Ascend/)30- Set environment variables (assuming package is installed at /usr/local/Ascend/)
31 31 
32```bash32```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用BatchNorm算子可选输入进行构图,旨在帮助构图开发者快速理解可选输入定义和使用该类型算子进行构图5本样例使用BatchNorm算子可选输入进行构图,旨在帮助构图开发者快速理解可选输入定义和使用该类型算子进行构图
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7cpp/10cpp/
8├── src/11├── src/
@@ -17,28 +20,40 @@ cpp/
17```20```
18 21 
19## 3、使用方法22## 3、使用方法
23+ 
20### 3.1、准备cann包24### 3.1、准备cann包
25+ 
21- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包26- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
22- 设置环境变量 (假设包安装在/usr/local/Ascend/)27- 设置环境变量 (假设包安装在/usr/local/Ascend/)
28+ 
23```29```
24source /usr/local/Ascend/cann/set_env.sh30source /usr/local/Ascend/cann/set_env.sh
25```31```
32+ 
26### 3.2、编译和执行33### 3.2、编译和执行
34+ 
27#### 1.2.1 生成 es 接口与构建图进行DUMP35#### 1.2.1 生成 es 接口与构建图进行DUMP
36+ 
28只需运行下述命令即可完成清理、生成接口、构图和DUMP图:37只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
38+ 
29```bash39```bash
30bash run_sample.sh40bash run_sample.sh
31```41```
42+ 
32当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:43当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
44+ 
33```45```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```47```
48+ 
36**1.2.2 输出文件说明**49**1.2.2 输出文件说明**
37 50 
38执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
39```bash53```bash
40ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看54ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看
41```55```
56+ 
42#### 1.2.3 构建图并执行57#### 1.2.3 构建图并执行
43 58 
44基本的图构建和dump功能外,esb_sample支持构建图并实际执行计算。59基本的图构建和dump功能外,esb_sample支持构建图并实际执行计算。
@@ -46,40 +61,53 @@ ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看
46```bash61```bash
47bash run_sample.sh -t sample_and_run62bash run_sample.sh -t sample_and_run
48```63```
64+ 
49该命令会:65该命令会:
66+ 
501. 自动生成ES接口671. 自动生成ES接口
512. 编译sample程序682. 编译sample程序
523. 生成dump图、运行图并输出计算结果693. 生成dump图、运行图并输出计算结果
53 70 
54执行成功后会看到:71执行成功后会看到:
72+ 
55```73```
56[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录74[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
57```75```
76+ 
58可通过data文件查看计算结果77可通过data文件查看计算结果
78+ 
59### 3.3、日志打印79### 3.3、日志打印
80+ 
60可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕81可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
82+ 
61```bash83```bash
62export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕84export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
63export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别85export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
64```86```
87+ 
65### 1.4、图编译DUMP图88### 1.4、图编译DUMP图
89+ 
66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下90可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
91+ 
67```bash92```bash
68export DUMP_GE_GRAPH=293export DUMP_GE_GRAPH=2
69```94```
70 95 
71## 4、核心概念介绍96## 4、核心概念介绍
72 97 
73-### 4.1、构图步骤如下:98+### 4.1、构图步骤如下
99+ 
74- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)100- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
75- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))101- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
76- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)102- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
77- 设置图输出(明确图的输出节点,作为计算结果的终点)103- 设置图输出(明确图的输出节点,作为计算结果的终点)
78 104 
79-### 4.2、概念说明:105+### 4.2、概念说明
106+ 
80可选输入是指算子的某些输入是非必选输入。107可选输入是指算子的某些输入是非必选输入。
81 108 
82例如 BatchNorm 算子原型如下所示,ES 构图生成的API是`BatchNorm()`,支持在 C++ 层使用109例如 BatchNorm 算子原型如下所示,ES 构图生成的API是`BatchNorm()`,支持在 C++ 层使用
110+ 
83```bash111```bash
84 REG_OP(BatchNorm)112 REG_OP(BatchNorm)
85 .INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT}))113 .INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT}))
@@ -101,11 +129,13 @@ export DUMP_GE_GRAPH=2
101```129```
102 130 
103其对应的函数原型为:131其对应的函数原型为:
132+ 
104- 函数名:BatchNorm133- 函数名:BatchNorm
105- 参数:共 9 个,依次为 x, scale, offset, mean(可选输入), variance(可选输入), epsilon, data_format, is_training, exponential_avg_factor134- 参数:共 9 个,依次为 x, scale, offset, mean(可选输入), variance(可选输入), epsilon, data_format, is_training, exponential_avg_factor
106- 返回值:输出 y, batch_mean, batch_variance, reserve_space_1, reserve_space_2, reserve_space_3135- 返回值:输出 y, batch_mean, batch_variance, reserve_space_1, reserve_space_2, reserve_space_3
107 136 
108**C API中:**137**C API中:**
138+ 
109```139```
110EsBatchNormOutput EsBatchNorm(EsCTensorHolder *x, EsCTensorHolder *scale, EsCTensorHolder *offset, EsCTensorHolder *mean, EsCTensorHolder *variance, float epsilon, const char *data_format, bool is_training, float exponential_avg_factor);140EsBatchNormOutput EsBatchNorm(EsCTensorHolder *x, EsCTensorHolder *scale, EsCTensorHolder *offset, EsCTensorHolder *mean, EsCTensorHolder *variance, float epsilon, const char *data_format, bool is_training, float exponential_avg_factor);
111typedef struct {141typedef struct {
@@ -117,7 +147,9 @@ typedef struct {
117 EsCTensorHolder *reserve_space_3;147 EsCTensorHolder *reserve_space_3;
118} EsBatchNormOutput;148} EsBatchNormOutput;
119```149```
150+ 
120**C++ API中:**151**C++ API中:**
152+ 
121```153```
122BatchNormOutput BatchNorm(const EsTensorLike &x, const EsTensorLike &scale, const EsTensorLike &offset, const EsTensorLike &mean=nullptr, const EsTensorLike &variance=nullptr, float epsilon=0.000100, const char *data_format="NHWC", bool is_training=true, float exponential_avg_factor=1.000000);154BatchNormOutput BatchNorm(const EsTensorLike &x, const EsTensorLike &scale, const EsTensorLike &offset, const EsTensorLike &mean=nullptr, const EsTensorLike &variance=nullptr, float epsilon=0.000100, const char *data_format="NHWC", bool is_training=true, float exponential_avg_factor=1.000000);
123struct BatchNormOutput {155struct BatchNormOutput {
@@ -129,4 +161,5 @@ struct BatchNormOutput {
129 EsTensorHolder reserve_space_3;161 EsTensorHolder reserve_space_3;
130};162};
131```163```
164+ 
132注: 使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况165注: 使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况
@@ -23,7 +23,7 @@ cpp/
23 23 
24### 3.1 Prepare CANN Package24### 3.1 Prepare CANN Package
25 25 
26-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)26+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
28 28 
29```bash29```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用BatchNorm算子可选输入进行构图,旨在帮助构图开发者快速理解可选输入定义和使用该类型算子进行构图5本样例使用BatchNorm算子可选输入进行构图,旨在帮助构图开发者快速理解可选输入定义和使用该类型算子进行构图
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -13,58 +16,78 @@ python/
13```16```
14 17 
15## 3、使用方法18## 3、使用方法
19+ 
16### 3.1、准备cann包20### 3.1、准备cann包
21+ 
17- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
18- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
19```25```
20source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
21```27```
28+ 
22### 3.2、编译和执行29### 3.2、编译和执行
30+ 
23- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
24```bash33```bash
25bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
26```35```
36+ 
27该命令会:37该命令会:
38+ 
281. 自动生成ES接口391. 自动生成ES接口
292. 编译sample程序402. 编译sample程序
303. 生成dump图并运行该图413. 生成dump图并运行该图
31 42 
32执行成功后会看到:43执行成功后会看到:
44+ 
33```45```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```47```
48+ 
36#### 输出文件说明49#### 输出文件说明
37 50 
38执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
39- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
40 54 
41### 3.3、日志打印55### 3.3、日志打印
56+ 
42可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
43```bash59```bash
44export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
45export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
46```62```
63+ 
47### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
48可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
49```bash68```bash
50export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
51```70```
52 71 
53## 4、核心概念介绍72## 4、核心概念介绍
54 73 
55-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
56- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
57- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
58- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
59- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
60 80 
61-### 4.2、概念说明:81+### 4.2、概念说明
82+ 
62可选输入是指算子的某些输入是非必选输入。83可选输入是指算子的某些输入是非必选输入。
63 84 
64**构图 API 特点:**85**构图 API 特点:**
86+ 
65- 构图时输入为非必传参数87- 构图时输入为非必传参数
66 88 
67例如 BatchNorm 算子原型如下所示,ES 构图生成的API是`BatchNorm()`,支持在 Python 层使用89例如 BatchNorm 算子原型如下所示,ES 构图生成的API是`BatchNorm()`,支持在 Python 层使用
90+ 
68```bash91```bash
69 REG_OP(BatchNorm)92 REG_OP(BatchNorm)
70 .INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT}))93 .INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT}))
@@ -84,12 +107,15 @@ export DUMP_GE_GRAPH=2
84 .ATTR(exponential_avg_factor, Float, 1.0)107 .ATTR(exponential_avg_factor, Float, 1.0)
85 .OP_END_FACTORY_REG(BatchNorm)108 .OP_END_FACTORY_REG(BatchNorm)
86```109```
110+ 
87其对应的函数原型为:111其对应的函数原型为:
112+ 
88- 函数名:BatchNorm113- 函数名:BatchNorm
89- 参数:共 9 个,依次为 x, scale, offset, mean(可选输入), variance(可选输入), epsilon, data_format, is_training, exponential_avg_factor114- 参数:共 9 个,依次为 x, scale, offset, mean(可选输入), variance(可选输入), epsilon, data_format, is_training, exponential_avg_factor
90- 返回值:输出 y, batch_mean, batch_variance, reserve_space_1, reserve_space_2, reserve_space_3115- 返回值:输出 y, batch_mean, batch_variance, reserve_space_1, reserve_space_2, reserve_space_3
91 116 
92**Python API中:**117**Python API中:**
118+ 
93```bash119```bash
94BatchNorm(x: Union[TensorHolder, TensorLike], scale: Union[TensorHolder, TensorLike], offset: Union[TensorHolder, TensorLike], mean: Optional[Union[TensorHolder, TensorLike]] = None, variance: Optional[Union[TensorHolder, TensorLike]] = None,120BatchNorm(x: Union[TensorHolder, TensorLike], scale: Union[TensorHolder, TensorLike], offset: Union[TensorHolder, TensorLike], mean: Optional[Union[TensorHolder, TensorLike]] = None, variance: Optional[Union[TensorHolder, TensorLike]] = None,
95epsilon: float = 0.00100, data_format: str = "NHWC", is_training: bool = True, exponential_avg_factor: float = 0.00100) -> BatchNormOutput:121epsilon: float = 0.00100, data_format: str = "NHWC", is_training: bool = True, exponential_avg_factor: float = 0.00100) -> BatchNormOutput:
@@ -105,6 +131,7 @@ class BatchNormOutput:
105 self.reserve_space_2 = reserve_space_2131 self.reserve_space_2 = reserve_space_2
106 self.reserve_space_3 = reserve_space_3132 self.reserve_space_3 = reserve_space_3
107```133```
134+ 
108注:135注:
1091.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况1361.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况
110 137 
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1 Prepare CANN Package20### 3.1 Prepare CANN Package
21 21 
22-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用Sigmoid私有属性进行构图,旨在帮助构图开发者快速理解私有属性的定义并使用私有属性进行构图5本样例使用Sigmoid私有属性进行构图,旨在帮助构图开发者快速理解私有属性的定义并使用私有属性进行构图
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7cpp/10cpp/
8├── src/11├── src/
@@ -17,28 +20,40 @@ cpp/
17```20```
18 21 
19## 3、使用方法22## 3、使用方法
23+ 
20### 3.1、准备cann包24### 3.1、准备cann包
25+ 
21- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包26- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
22- 设置环境变量 (假设包安装在/usr/local/Ascend/)27- 设置环境变量 (假设包安装在/usr/local/Ascend/)
28+ 
23```29```
24source /usr/local/Ascend/cann/set_env.sh30source /usr/local/Ascend/cann/set_env.sh
25```31```
32+ 
26### 3.2、编译和执行33### 3.2、编译和执行
34+ 
27#### 1.2.1 生成 es 接口与构建图进行DUMP35#### 1.2.1 生成 es 接口与构建图进行DUMP
36+ 
28只需运行下述命令即可完成清理、生成接口、构图和DUMP图:37只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
38+ 
29```bash39```bash
30bash run_sample.sh40bash run_sample.sh
31```41```
42+ 
32当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:43当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
44+ 
33```45```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```47```
48+ 
36**1.2.2 输出文件说明**49**1.2.2 输出文件说明**
37 50 
38执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
39```bash53```bash
40ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看54ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看
41```55```
56+ 
42#### 1.2.3 构建图并执行57#### 1.2.3 构建图并执行
43 58 
44基本的图构建和dump功能外,esb_sample支持构建图并实际执行计算。59基本的图构建和dump功能外,esb_sample支持构建图并实际执行计算。
@@ -46,35 +61,47 @@ ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看
46```bash61```bash
47bash run_sample.sh -t sample_and_run62bash run_sample.sh -t sample_and_run
48```63```
64+ 
49该命令会:65该命令会:
66+ 
501. 自动生成ES接口671. 自动生成ES接口
512. 编译sample程序682. 编译sample程序
523. 生成dump图、运行图并输出计算结果693. 生成dump图、运行图并输出计算结果
53 70 
54执行成功后会看到:71执行成功后会看到:
72+ 
55```73```
56[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录74[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
57```75```
76+ 
58可通过data文件查看计算结果77可通过data文件查看计算结果
78+ 
59### 3.3、日志打印79### 3.3、日志打印
80+ 
60可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕81可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
82+ 
61```bash83```bash
62export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕84export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
63export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别85export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
64```86```
87+ 
65### 1.4、图编译DUMP图88### 1.4、图编译DUMP图
89+ 
66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下90可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
91+ 
67```bash92```bash
68export DUMP_GE_GRAPH=293export DUMP_GE_GRAPH=2
69```94```
70 95 
71## 4、核心概念介绍96## 4、核心概念介绍
72 97 
73-### 4.1、构图步骤如下:98+### 4.1、构图步骤如下
99+ 
74- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)100- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
75- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))101- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
76- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)102- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
77- 设置图输出(明确图的输出节点,作为计算结果的终点)103- 设置图输出(明确图的输出节点,作为计算结果的终点)
78 104 
79-### 4.2、概念说明:105+### 4.2、概念说明
106+ 
80私有属性指的是自定义在ir中不存在的属性,es构图提供对应接口来完成自定义属性的设置107私有属性指的是自定义在ir中不存在的属性,es构图提供对应接口来完成自定义属性的设置
@@ -23,7 +23,7 @@ cpp/
23 23 
24### 3.1 Prepare CANN Package24### 3.1 Prepare CANN Package
25 25 
26-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)26+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
28 28 
29```bash29```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用Sigmoid私有属性进行构图,旨在帮助构图开发者快速理解私有属性的定义并使用私有属性进行构图5本样例使用Sigmoid私有属性进行构图,旨在帮助构图开发者快速理解私有属性的定义并使用私有属性进行构图
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -15,49 +18,67 @@ python/
15## 3、使用方法18## 3、使用方法
16 19 
17### 3.1、准备cann包20### 3.1、准备cann包
21+ 
18- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
19- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
20```25```
21source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
22```27```
28+ 
23### 3.2、编译和执行29### 3.2、编译和执行
30+ 
24- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
32+ 
25```bash33```bash
26bash run_sample.sh -t sample_and_run_python34bash run_sample.sh -t sample_and_run_python
27```35```
36+ 
28该命令会:37该命令会:
38+ 
291. 自动生成ES接口391. 自动生成ES接口
302. 编译sample程序402. 编译sample程序
313. 生成dump图并运行该图413. 生成dump图并运行该图
32 42 
33执行成功后会看到:43执行成功后会看到:
44+ 
34```45```
35[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示46[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
36```47```
48+ 
37#### 输出文件说明49#### 输出文件说明
38 50 
39执行成功后会在当前目录生成以下文件:51执行成功后会在当前目录生成以下文件:
52+ 
40- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看53- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
41 54 
42### 3.3、日志打印55### 3.3、日志打印
56+ 
43可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕57可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
58+ 
44```bash59```bash
45export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕60export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
46export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别61export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
47```62```
63+ 
48### 3.4、图编译流程中DUMP图64### 3.4、图编译流程中DUMP图
65+ 
49可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下66可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
67+ 
50```bash68```bash
51export DUMP_GE_GRAPH=269export DUMP_GE_GRAPH=2
52```70```
53 71 
54## 4、核心概念介绍72## 4、核心概念介绍
55 73 
56-### 4.1、构图步骤如下:74+### 4.1、构图步骤如下
75+ 
57- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)76- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
58- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))77- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
59- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)78- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
60- 设置图输出(明确图的输出节点,作为计算结果的终点)79- 设置图输出(明确图的输出节点,作为计算结果的终点)
61-### 4.2、概念说明:80+ 
81+### 4.2、概念说明
82+ 
62私有属性指的是自定义在ir中不存在的属性,es构图提供对应接口来完成自定义属性的设置;83私有属性指的是自定义在ir中不存在的属性,es构图提供对应接口来完成自定义属性的设置;
63本用例中的私有属性会在当前目录默认生成`ge_proto_*.txt`文件中展示84本用例中的私有属性会在当前目录默认生成`ge_proto_*.txt`文件中展示
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1 Prepare CANN Package20### 3.1 Prepare CANN Package
21 21 
22-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式5本样例对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7cpp/10cpp/
8├── src/11├── src/
@@ -17,25 +20,34 @@ cpp/
17```20```
18 21 
19## 3、使用方法22## 3、使用方法
23+ 
20### 3.1、准备cann包24### 3.1、准备cann包
25+ 
21- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包26- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
22- 设置环境变量 (假设包安装在/usr/local/Ascend/)27- 设置环境变量 (假设包安装在/usr/local/Ascend/)
28+ 
23```29```
24source /usr/local/Ascend/cann/set_env.sh30source /usr/local/Ascend/cann/set_env.sh
25```31```
32+ 
26### 3.2、编译和执行33### 3.2、编译和执行
27 34 
28只需运行下述命令即可完成清理、生成接口、构图和DUMP图:35只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
36+ 
29```bash37```bash
30bash run_sample.sh38bash run_sample.sh
31```39```
40+ 
32当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:41当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
42+ 
33```43```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示44[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```45```
46+ 
36#### 输出文件说明47#### 输出文件说明
37 48 
38执行成功后会在当前目录生成以下文件:49执行成功后会在当前目录生成以下文件:
50+ 
39- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看51- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
40 52 
41#### 构建图并执行53#### 构建图并执行
@@ -45,30 +57,42 @@ bash run_sample.sh
45```bash57```bash
46bash run_sample.sh -t sample_and_run58bash run_sample.sh -t sample_and_run
47```59```
60+ 
48该命令会:61该命令会:
62+ 
491. 自动生成ES接口631. 自动生成ES接口
502. 编译sample程序642. 编译sample程序
513. 生成dump图、运行图并输出计算结果653. 生成dump图、运行图并输出计算结果
52 66 
53执行成功后会看到:67执行成功后会看到:
68+ 
54```69```
55[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录70[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
56```71```
72+ 
57可通过data文件查看计算结果73可通过data文件查看计算结果
74+ 
58### 3.3、日志打印75### 3.3、日志打印
76+ 
59可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕77可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
78+ 
60```bash79```bash
61export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕80export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
62export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别81export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
63```82```
83+ 
64### 3.4、图编译流程中DUMP图84### 3.4、图编译流程中DUMP图
85+ 
65可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下86可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
87+ 
66```bash88```bash
67export DUMP_GE_GRAPH=289export DUMP_GE_GRAPH=2
68```90```
91+ 
69## 4、核心概念介绍92## 4、核心概念介绍
70 93 
71-### 4.1、构图步骤如下:94+### 4.1、构图步骤如下
95+ 
72- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)96- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
73- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))97- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
74- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)98- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
@@ -23,7 +23,7 @@ cpp/
23 23 
24### 3.1 Prepare CANN Package24### 3.1 Prepare CANN Package
25 25 
26-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)26+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
28 28 
29```bash29```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式5本样例对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -15,46 +18,62 @@ python/
15## 3、使用方法18## 3、使用方法
16 19 
17### 3.1、准备cann包20### 3.1、准备cann包
21+ 
18- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/build.md#1-环境准备)正确安装`toolkit`和`ops`包
19- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
20```25```
21source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
22```27```
28+ 
23### 3.2、编译和执行29### 3.2、编译和执行
30+ 
24- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
25 只需运行下述命令即可完成清理、生成接口、构图和DUMP图和执行sample文件:32 只需运行下述命令即可完成清理、生成接口、构图和DUMP图和执行sample文件:
33+ 
26```bash34```bash
27bash run_sample.sh -t sample_and_run_python35bash run_sample.sh -t sample_and_run_python
28```36```
37+ 
29该命令会:38该命令会:
39+ 
301. 自动生成ES接口401. 自动生成ES接口
312. 编译sample程序412. 编译sample程序
323. 生成dump图并运行该图423. 生成dump图并运行该图
33 43 
34执行成功后会看到:44执行成功后会看到:
45+ 
35```46```
36[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示47[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
37```48```
49+ 
38#### 输出文件说明50#### 输出文件说明
39 51 
40执行成功后会在当前目录生成以下文件:52执行成功后会在当前目录生成以下文件:
53+ 
41- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看54- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
42 55 
43### 3.3、日志打印56### 3.3、日志打印
57+ 
44可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕58可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
59+ 
45```bash60```bash
46export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕61export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
47export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别62export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
48```63```
64+ 
49### 3.4、图编译流程中DUMP图65### 3.4、图编译流程中DUMP图
66+ 
50可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下67可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
68+ 
51```bash69```bash
52export DUMP_GE_GRAPH=270export DUMP_GE_GRAPH=2
53```71```
54 72 
55## 4、核心概念介绍73## 4、核心概念介绍
56 74 
57-### 4.1、构图步骤如下:75+### 4.1、构图步骤如下
76+ 
58- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)77- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
59- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))78- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
60- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)79- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1 Prepare CANN Package20### 3.1 Prepare CANN Package
21 21 
22-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/build.md#1-环境准备)22+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/build.md#1-environment-preparation)
23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用NZ数据格式对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式5本样例使用NZ数据格式对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7cpp/10cpp/
8├── src/11├── src/
@@ -17,25 +20,34 @@ cpp/
17```20```
18 21 
19## 3、使用方法22## 3、使用方法
23+ 
20### 3.1、准备cann包24### 3.1、准备cann包
25+ 
21- 通过安装指导 [环境准备](../../../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包26- 通过安装指导 [环境准备](../../../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包
22- 设置环境变量 (假设包安装在/usr/local/Ascend/)27- 设置环境变量 (假设包安装在/usr/local/Ascend/)
28+ 
23```29```
24source /usr/local/Ascend/cann/set_env.sh30source /usr/local/Ascend/cann/set_env.sh
25```31```
32+ 
26### 3.2、编译和执行33### 3.2、编译和执行
27 34 
28只需运行下述命令即可完成清理、生成接口、构图和DUMP图:35只需运行下述命令即可完成清理、生成接口、构图和DUMP图:
36+ 
29```bash37```bash
30bash run_sample.sh38bash run_sample.sh
31```39```
40+ 
32当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:41当前 run_sample.sh 的行为是:先自动清理旧的 build,构建 sample并默认执行sample dump 。当看到如下信息,代表执行成功:
42+ 
33```43```
34[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示44[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
35```45```
46+ 
36#### 输出文件说明47#### 输出文件说明
37 48 
38执行成功后会在当前目录生成以下文件:49执行成功后会在当前目录生成以下文件:
50+ 
39- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看51- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
40 52 
41#### 构建图并执行53#### 构建图并执行
@@ -45,35 +57,48 @@ bash run_sample.sh
45```bash57```bash
46bash run_sample.sh -t sample_and_run58bash run_sample.sh -t sample_and_run
47```59```
60+ 
48该命令会:61该命令会:
62+ 
491. 自动生成ES接口631. 自动生成ES接口
502. 编译sample程序642. 编译sample程序
513. 生成dump图、运行图并输出计算结果653. 生成dump图、运行图并输出计算结果
52 66 
53执行成功后会看到:67执行成功后会看到:
68+ 
54```69```
55[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录70[Success] sample_and_run 执行成功,pbtxt和data输出dump 已生成在当前目录
56```71```
72+ 
57可通过data文件查看计算结果73可通过data文件查看计算结果
74+ 
58### 3.3、日志打印75### 3.3、日志打印
76+ 
59可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕77可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh之前设置如下环境变量来让日志打印到屏幕
78+ 
60```bash79```bash
61export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕80export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
62export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别81export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
63```82```
83+ 
64### 3.4、图编译流程中DUMP图84### 3.4、图编译流程中DUMP图
85+ 
65可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下86可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run 之前设置如下环境变量来DUMP图到执行路径下
87+ 
66```bash88```bash
67export DUMP_GE_GRAPH=289export DUMP_GE_GRAPH=2
68```90```
91+ 
69## 4、核心概念介绍92## 4、核心概念介绍
70 93 
71-### 4.1、构图步骤如下:94+### 4.1、构图步骤如下
95+ 
72- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)96- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
73- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))97- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
74- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)98- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
75- 设置图输出(明确图的输出节点,作为计算结果的终点)99- 设置图输出(明确图的输出节点,作为计算结果的终点)
76 100 
77-### 4.2、NZ数据格式的说明:101+### 4.2、NZ数据格式的说明
102+ 
78- NZ数据格式是昇腾亲和的数据格式,在昇腾AI处理器上计算效率更高,通常比ND格式性能更好。103- NZ数据格式是昇腾亲和的数据格式,在昇腾AI处理器上计算效率更高,通常比ND格式性能更好。
79- 关于NZ数据格式的详细说明,请参考昇腾官网说明:[数据排布格式](https://www.hiascend.com/document/detail/zh/canncommercial/850/graph/graphdevg/atlas_ascendc_10_0099.html)104- 关于NZ数据格式的详细说明,请参考昇腾官网说明:[数据排布格式](https://www.hiascend.com/document/detail/zh/canncommercial/850/graph/graphdevg/atlas_ascendc_10_0099.html)
@@ -23,7 +23,7 @@ cpp/
23 23 
24### 3.1 Prepare CANN Package24### 3.1 Prepare CANN Package
25 25 
26-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/quick_install.md)26+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/quick_install.md)
27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)27- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
28 28 
29```bash29```bash
@@ -1,8 +1,11 @@
1# 样例使用指导1# 样例使用指导
2 2 
3## 1、功能描述3## 1、功能描述
4+ 
4本样例使用NZ数据格式对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式5本样例使用NZ数据格式对transformer进行构图,旨在帮助构图开发者快速上手关于es的构图方式
6+ 
5## 2、目录结构7## 2、目录结构
8+ 
6```angular2html9```angular2html
7python/10python/
8├── src/11├── src/
@@ -15,51 +18,68 @@ python/
15## 3、使用方法18## 3、使用方法
16 19 
17### 3.1、准备cann包20### 3.1、准备cann包
21+ 
18- 通过安装指导 [环境准备](../../../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包22- 通过安装指导 [环境准备](../../../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包
19- 设置环境变量 (假设包安装在/usr/local/Ascend/)23- 设置环境变量 (假设包安装在/usr/local/Ascend/)
24+ 
20```25```
21source /usr/local/Ascend/cann/set_env.sh26source /usr/local/Ascend/cann/set_env.sh
22```27```
28+ 
23### 3.2、编译和执行29### 3.2、编译和执行
30+ 
24- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)31- 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
25 只需运行下述命令即可完成清理、生成接口、构图和DUMP图和执行sample文件:32 只需运行下述命令即可完成清理、生成接口、构图和DUMP图和执行sample文件:
33+ 
26```bash34```bash
27bash run_sample.sh -t sample_and_run_python35bash run_sample.sh -t sample_and_run_python
28```36```
37+ 
29该命令会:38该命令会:
39+ 
301. 自动生成ES接口401. 自动生成ES接口
312. 编译sample程序412. 编译sample程序
323. 生成dump图并运行该图423. 生成dump图并运行该图
33 43 
34执行成功后会看到:44执行成功后会看到:
45+ 
35```46```
36[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示47[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
37```48```
49+ 
38#### 输出文件说明50#### 输出文件说明
39 51 
40执行成功后会在当前目录生成以下文件:52执行成功后会在当前目录生成以下文件:
53+ 
41- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看54- `ge_onnx_*.pbtxt` - 图结构的protobuf文本格式,可用netron查看
42 55 
43### 3.3、日志打印56### 3.3、日志打印
57+ 
44可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕58可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕
59+ 
45```bash60```bash
46export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕61export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
47export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别62export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
48```63```
64+ 
49### 3.4、图编译流程中DUMP图65### 3.4、图编译流程中DUMP图
66+ 
50可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下67可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在 bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下
68+ 
51```bash69```bash
52export DUMP_GE_GRAPH=270export DUMP_GE_GRAPH=2
53```71```
54 72 
55## 4、核心概念介绍73## 4、核心概念介绍
56 74 
57-### 4.1、构图步骤如下:75+### 4.1、构图步骤如下
76+ 
58- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)77- 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
59- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))78- 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
60- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)79- 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
61- 设置图输出(明确图的输出节点,作为计算结果的终点)80- 设置图输出(明确图的输出节点,作为计算结果的终点)
62 81 
63-### 4.2、NZ数据格式的说明:82+### 4.2、NZ数据格式的说明
83+ 
64- NZ数据格式是昇腾亲和的数据格式,在昇腾AI处理器上计算效率更高,通常比ND格式性能更好。84- NZ数据格式是昇腾亲和的数据格式,在昇腾AI处理器上计算效率更高,通常比ND格式性能更好。
65- 关于NZ数据格式的详细说明,请参考昇腾官网说明:[数据排布格式](https://www.hiascend.com/document/detail/zh/canncommercial/850/graph/graphdevg/atlas_ascendc_10_0099.html)85- 关于NZ数据格式的详细说明,请参考昇腾官网说明:[数据排布格式](https://www.hiascend.com/document/detail/zh/canncommercial/850/graph/graphdevg/atlas_ascendc_10_0099.html)
@@ -19,7 +19,7 @@ python/
19 19 
20### 3.1 Prepare CANN Package20### 3.1 Prepare CANN Package
21 21 
22-- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/zh/quick_install.md)22+- Correctly install `toolkit` and `ops` packages following the installation guide [Environment Preparation](../../../../docs/en/quick_install.md)
23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)23- Set environment variables (assuming the package is installed in /usr/local/Ascend/)
24 24 
25```bash25```bash
@@ -12,5 +12,5 @@
12 12 
13| 目录 | 说明 |13| 目录 | 说明 |
14|------|------|14|------|------|
15-| [pattern_base_pass](pattern_base_pass/README.md) | 推荐优先参考。通过 `PatternFusionPass` 或 `DecomposePass` 开发 pattern 类融合规则 |15+| [pattern_base_pass](pattern_base_pass/README.md) | 推荐优先参考。通过 `PatternFusionPass` 或 `DecomposePass` 开发 pattern 类融合规则。 |
16-| [graph_base_pass](graph_base_pass/README.md) | 通过 graph 接口直接改图的样例,适合需要完全手动控制图修改的场景 |16+| [graph_base_pass](graph_base_pass/README.md) | 通过 graph 接口直接改图的样例,适合需要完全手动控制图修改的场景。 |
@@ -4,7 +4,7 @@ This directory provides development documentation and samples for GE custom fusi
4 4 
5If this is your first development, it's recommended to read in the following order:5If this is your first development, it's recommended to read in the following order:
6 6 
7-1. [Fusion Pattern Pass Mechanism](../../docs/zh/design/features/fusion_pattern_pass.md): First understand pattern, matching, filtering, replacement and boundary rules.7+1. [Fusion Pattern Pass Mechanism](../../docs/en/design/features/fusion_pattern_pass.md): First understand pattern, matching, filtering, replacement and boundary rules.
82. [Python Fusion Pass Development Guide](python_fusion_pass_development_guide.md): Supports runtime integration and `@pattern` expression syntax.82. [Python Fusion Pass Development Guide](python_fusion_pass_development_guide.md): Supports runtime integration and `@pattern` expression syntax.
93. [C++ Fusion Pass Development Guide](cpp_fusion_pass_development_guide.md): Suitable for product delivery after compiling into `.so`.93. [C++ Fusion Pass Development Guide](cpp_fusion_pass_development_guide.md): Suitable for product delivery after compiling into `.so`.
10 10 
@@ -4,7 +4,7 @@
4 4 
5C++ pass 的交付形态是动态库。开发者实现 pass 类,把它注册到 GE,然后编译成 `.so`。GE 编译模型时加载该 `.so`,在指定阶段执行 pass。5C++ pass 的交付形态是动态库。开发者实现 pass 类,把它注册到 GE,然后编译成 `.so`。GE 编译模型时加载该 `.so`,在指定阶段执行 pass。
6 6 
7-如果你还在探索规则,建议先用 [Python 融合 Pass 开发指南](python_fusion_pass_development_guide.md) 快速验证;规则稳定后再迁移到 C++。7+如果你还在探索规则,建议先用[Python 融合 Pass 开发指南](python_fusion_pass_development_guide.md)快速验证;规则稳定后再迁移到 C++。
8 8 
9## 1. 选择哪种 pass9## 1. 选择哪种 pass
10 10 
@@ -1,6 +1,6 @@
1# C++ Fusion Pass Development Guide1# C++ Fusion Pass Development Guide
2 2 
3-This guide is for developers who want to write GE fusion passes in C++. It is recommended to first read the language-independent mechanism description: [Fusion Pattern Pass Mechanism](../../docs/zh/design/features/fusion_pattern_pass.md).3+This guide is for developers who want to write GE fusion passes in C++. It is recommended to first read the language-independent mechanism description: [Fusion Pattern Pass Mechanism](../../docs/en/design/features/fusion_pattern_pass.md).
4 4 
5C++ passes are delivered as dynamic libraries. Developers implement a pass class, register it with GE, and compile it into a `.so`. When GE compiles a model, it loads the `.so` and executes the pass at a specified stage.5C++ passes are delivered as dynamic libraries. Developers implement a pass class, register it with GE, and compile it into a `.so`. When GE compiles a model, it loads the `.so` and executes the pass at a specified stage.
6 6 
@@ -402,7 +402,7 @@ When using `atc`, can add `--log=debug`.
402 402 
403## 13. Recommended Reading Order403## 13. Recommended Reading Order
404 404 
405-1. [Fusion Pattern Pass Mechanism](../../docs/zh/design/features/fusion_pattern_pass.md)405+1. [Fusion Pattern Pass Mechanism](../../docs/en/design/features/fusion_pattern_pass.md)
4062. [AddZeroPass C++ example](pattern_base_pass/4_add_zero_pass/cpp/README.md)4062. [AddZeroPass C++ example](pattern_base_pass/4_add_zero_pass/cpp/README.md)
4073. [MatMul+Add C++ example](pattern_base_pass/1_fuse_matmul_add_pass/cpp/README.md)4073. [MatMul+Add C++ example](pattern_base_pass/1_fuse_matmul_add_pass/cpp/README.md)
4084. [capture tensor C++ example](pattern_base_pass/2_fuse_matmul_add_pass_with_capture_tensor/cpp/README.md)4084. [capture tensor C++ example](pattern_base_pass/2_fuse_matmul_add_pass_with_capture_tensor/cpp/README.md)
@@ -21,7 +21,6 @@
21- 使用python及其依赖库版本:python==3.7、TensorFlow==1.15.0、numpy==1.21.621- 使用python及其依赖库版本:python==3.7、TensorFlow==1.15.0、numpy==1.21.6
22- 已完成[相关环境准备](../../../../docs/zh/build.md)。22- 已完成[相关环境准备](../../../../docs/zh/build.md)。
23 23 
24- 
25## 程序编译<a name="section6645633456813"></a>24## 程序编译<a name="section6645633456813"></a>
26 25 
27假设CANN软件包的安装目录为INSTALL_PATH,例如`/home/HwHiAiUser/Ascend/`。26假设CANN软件包的安装目录为INSTALL_PATH,例如`/home/HwHiAiUser/Ascend/`。
@@ -56,6 +55,7 @@
56 mkdir build && cd build55 mkdir build && cd build
57 cmake .. && make56 cmake .. && make
58 ```57 ```
58+ 
594. 成功编译后通过make install将动态库文件libfuse_matmul_add_pass.so安装到自定义融合pass目录下。594. 成功编译后通过make install将动态库文件libfuse_matmul_add_pass.so安装到自定义融合pass目录下。
60 60 
61 ```61 ```
@@ -80,10 +80,10 @@
80 80 
81 `${ASCEND_PATH}`请替换相关软件包的实际安装路径。81 `${ASCEND_PATH}`请替换相关软件包的实际安装路径。
82 82 
83- 
842. 使用ATC离线推理。832. 使用ATC离线推理。
85 84 
86 - 设置环境变量,dump出编译过程中的模型图:85 - 设置环境变量,dump出编译过程中的模型图:
86+ 
87 ```87 ```
88 export DUMP_GE_GRAPH=188 export DUMP_GE_GRAPH=1
89 ```89 ```
@@ -19,7 +19,7 @@ This example is a MatMul+Add fused to GEMM custom pass example, demonstrating ho
19 19 
20- Compiler: GCC >= 7.3.x20- Compiler: GCC >= 7.3.x
21- Python and dependency versions: python==3.7, TensorFlow==1.15.0, numpy==1.21.621- Python and dependency versions: python==3.7, TensorFlow==1.15.0, numpy==1.21.6
22-- Completed [environment preparation](../../../../docs/zh/build.md).22+- Completed [environment preparation](../../../../docs/en/build.md).
23 23 
24## Program Compilation<a name="section6645633456813"></a>24## Program Compilation<a name="section6645633456813"></a>
25 25 
@@ -25,8 +25,8 @@
25- 使用python及其依赖库版本:python>=3.9 、pytorch>=2.125- 使用python及其依赖库版本:python>=3.9 、pytorch>=2.1
26- 已完成[相关环境准备](../../../../../docs/zh/build.md)。26- 已完成[相关环境准备](../../../../../docs/zh/build.md)。
27 27 
28- 
29## 实现步骤28## 实现步骤
29+ 
301. 定义`MoveReluBeforeConcatPass`类继承`FusionBasePass`。301. 定义`MoveReluBeforeConcatPass`类继承`FusionBasePass`。
312. 重写基类`FusionBasePass`中的`Run`方法,其中实现自定义pass逻辑。312. 重写基类`FusionBasePass`中的`Run`方法,其中实现自定义pass逻辑。
323. 定义`FindConcatNodesMeetRequirements`遍历图中节点,获取符合条件的Concat节点。323. 定义`FindConcatNodesMeetRequirements`遍历图中节点,获取符合条件的Concat节点。
@@ -70,6 +70,7 @@
70 70 
714. 执行make命令编译自定义pass so,成功编译后通过make install将动态库文件libmove_relu_before_concat_pass.so安装到自定义融合pass目录下。714. 执行make命令编译自定义pass so,成功编译后通过make install将动态库文件libmove_relu_before_concat_pass.so安装到自定义融合pass目录下。
72 可以在make后增加可选参数`-j$(nproc)`用于并行执行构建任务,`$(nproc)`动态获取CPU核心数。72 可以在make后增加可选参数`-j$(nproc)`用于并行执行构建任务,`$(nproc)`动态获取CPU核心数。
73+ 
73 ```74 ```
74 make -j$(nproc) move_relu_before_concat_pass75 make -j$(nproc) move_relu_before_concat_pass
75 make install76 make install
@@ -104,31 +105,44 @@
1042. 使用ATC离线推理。1052. 使用ATC离线推理。
105 106 
106 - 设置环境变量,dump出编译过程中的模型图:107 - 设置环境变量,dump出编译过程中的模型图:
108+ 
107 ```109 ```
108 export DUMP_GE_GRAPH=1110 export DUMP_GE_GRAPH=1
109 ```111 ```
112+ 
110 - 设置 build 目录环境变量,`BUILD_PATH` 为“程序编译”步骤中生成的 build 目录实际路径:113 - 设置 build 目录环境变量,`BUILD_PATH` 为“程序编译”步骤中生成的 build 目录实际路径:
114+ 
111 ```115 ```
112 export BUILD_PATH=/path/to/build116 export BUILD_PATH=/path/to/build
113 ```117 ```
118+ 
114 - 安装es_all.whl119 - 安装es_all.whl
120+ 
115 ```121 ```
116 pip install --force-reinstall --upgrade --target ${ASCEND_PATH}/python/site-packages/ ${BUILD_PATH}/es_output/whl/es_all-*.whl122 pip install --force-reinstall --upgrade --target ${ASCEND_PATH}/python/site-packages/ ${BUILD_PATH}/es_output/whl/es_all-*.whl
117 ```123 ```
124+ 
118 - 设置环境变量,添加es_all.so的路径125 - 设置环境变量,添加es_all.so的路径
126+ 
119 ```127 ```
120 export LD_LIBRARY_PATH="${BUILD_PATH}/es_output/lib64:${LD_LIBRARY_PATH}"128 export LD_LIBRARY_PATH="${BUILD_PATH}/es_output/lib64:${LD_LIBRARY_PATH}"
121 ```129 ```
130+ 
122 - 进入data目录执行.py文件导出air:131 - 进入data目录执行.py文件导出air:
132+ 
123 ```133 ```
124 python es_gen_air.py134 python es_gen_air.py
125 ```135 ```
136+ 
126 - 执行结束后,在data目录下生成.air格式的模型文件,名称为graph.air。137 - 执行结束后,在data目录下生成.air格式的模型文件,名称为graph.air。
127 - 执行ATC工具命令(关于ATC工具的详细说明,请前往[昇腾文档](https://www.hiascend.com/zh/document)搜索文档“ATC离线模型编译工具”),`soc_version`请根据实际环境修改:138 - 执行ATC工具命令(关于ATC工具的详细说明,请前往[昇腾文档](https://www.hiascend.com/zh/document)搜索文档“ATC离线模型编译工具”),`soc_version`请根据实际环境修改:
139+ 
128 ```140 ```
129 atc --model=./graph.air --framework=1 --soc_version=xxx --output=./model141 atc --model=./graph.air --framework=1 --soc_version=xxx --output=./model
130 ```142 ```
143+ 
131 - 日志中出现如下打印:144 - 日志中出现如下打印:
145+ 
132 ```146 ```
133 MoveReluBeforeConcatPass147 MoveReluBeforeConcatPass
134 Define Replacement for MoveReluBeforeConcatPass148 Define Replacement for MoveReluBeforeConcatPass
@@ -137,14 +151,19 @@
137 151 
1383. 在线推理1523. 在线推理
139 - 设置环境变量,dump出编译过程中的模型图:153 - 设置环境变量,dump出编译过程中的模型图:
154+ 
140 ```155 ```
141 export DUMP_GE_GRAPH=1156 export DUMP_GE_GRAPH=1
142 ```157 ```
158+ 
143 - 进入data目录执行.py文件进行在线推理(在线推理请确保已安装torch_npu插件):159 - 进入data目录执行.py文件进行在线推理(在线推理请确保已安装torch_npu插件):
160+ 
144 ```161 ```
145 python torch_forward.py162 python torch_forward.py
146 ```163 ```
164+ 
147 - 日志中出现如下打印:165 - 日志中出现如下打印:
166+ 
148 ```167 ```
149 MoveReluBeforeConcatPass168 MoveReluBeforeConcatPass
150 Define Replacement for MoveReluBeforeConcatPass169 Define Replacement for MoveReluBeforeConcatPass
@@ -161,6 +180,7 @@
161 可以发现模型已按预期优化,即ReLu被移动到Concat前。180 可以发现模型已按预期优化,即ReLu被移动到Concat前。
162 181 
163 - 若未获得预期结果,可设置如下环境变量(如使用atc命令,还需添加参数`--log=debug`)让日志打印到屏幕,来定位原因。182 - 若未获得预期结果,可设置如下环境变量(如使用atc命令,还需添加参数`--log=debug`)让日志打印到屏幕,来定位原因。
183+ 
164 ```bash184 ```bash
165 export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕185 export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
166 export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别186 export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
@@ -23,7 +23,7 @@ using eager style api and fusion interfaces.
23 23 
24- Compiler: GCC >= 7.3.x24- Compiler: GCC >= 7.3.x
25- Python and dependency versions: python>=3.9, pytorch>=2.125- Python and dependency versions: python>=3.9, pytorch>=2.1
26-- Completed [environment preparation](../../../../../docs/zh/build.md).26+- Completed [environment preparation](../../../../../docs/en/build.md).
27 27 
28## Implementation Steps28## Implementation Steps
29 29 
@@ -135,7 +135,7 @@ Assume CANN package installation directory is INSTALL_PATH, e.g., `/home/HwHiAiU
135 ```135 ```
136 136 
137 - After execution, .air format model file named graph.air is generated in data directory.137 - After execution, .air format model file named graph.air is generated in data directory.
138- - Execute ATC tool command (for detailed ATC tool instructions, visit [Ascend Documentation](https://www.hiascend.com/zh/document) and search "ATC Offline Model Compilation Tool"), modify `soc_version` per actual environment:138+ - Execute ATC tool command (for detailed ATC tool instructions, visit [Ascend Documentation](https://www.hiascend.com/en/document) and search "ATC Offline Model Compilation Tool"), modify `soc_version` per actual environment:
139 139 
140 ```bash140 ```bash
141 atc --model=./graph.air --framework=1 --soc_version=xxx --output=./model141 atc --model=./graph.air --framework=1 --soc_version=xxx --output=./model
@@ -34,7 +34,6 @@
345. 定义`DeleteTransposePairBehindIfExist`,广度遍历后续节点,删除转置操作。345. 定义`DeleteTransposePairBehindIfExist`,广度遍历后续节点,删除转置操作。
356. 注册`ConvTransFormatPass`到指定阶段。356. 注册`ConvTransFormatPass`到指定阶段。
36 36 
37- 
38## 程序编译37## 程序编译
39 38 
40假设CANN软件包的安装目录为INSTALL_PATH, 例如`/home/HwHiAiUser/Ascend/`。39假设CANN软件包的安装目录为INSTALL_PATH, 例如`/home/HwHiAiUser/Ascend/`。
@@ -70,6 +69,7 @@
70 69 
714. 执行如下命令编译自定义pass so,并将编译后的动态库文件libmodify_conv_data_format_pass.so安装到自定义融合pass目录下。704. 执行如下命令编译自定义pass so,并将编译后的动态库文件libmodify_conv_data_format_pass.so安装到自定义融合pass目录下。
72 可以在make后增加可选参数`-j$(nproc)`用于并行执行构建任务,`$(nproc)`动态获取CPU核心数。71 可以在make后增加可选参数`-j$(nproc)`用于并行执行构建任务,`$(nproc)`动态获取CPU核心数。
72+ 
73 ```73 ```
74 make -j$(nproc) modify_conv_data_format_pass74 make -j$(nproc) modify_conv_data_format_pass
75 make install75 make install
@@ -104,20 +104,27 @@
1042. 使用ATC离线推理。1042. 使用ATC离线推理。
105 105 
106 - 设置环境变量,dump出编译过程中的模型图:106 - 设置环境变量,dump出编译过程中的模型图:
107+ 
107 ```108 ```
108 export DUMP_GE_GRAPH=1109 export DUMP_GE_GRAPH=1
109 ```110 ```
111+ 
110 - 进入data目录执行.py文件导出onnx(文件中使用了torch的onnx导出器,依赖额外的Python包onnx,运行前确保安装。112 - 进入data目录执行.py文件导出onnx(文件中使用了torch的onnx导出器,依赖额外的Python包onnx,运行前确保安装。
111 此外ATC工具当前最高支持onnx opset_version 18,若当前torch默认导出更高版本,请显式指定,见脚本中注释):113 此外ATC工具当前最高支持onnx opset_version 18,若当前torch默认导出更高版本,请显式指定,见脚本中注释):
114+ 
112 ```115 ```
113 python torch_gen_onnx.py116 python torch_gen_onnx.py
114 ```117 ```
118+ 
115 - 执行结束后,在data目录下生成.onnx格式的模型文件,名称为model.onnx。119 - 执行结束后,在data目录下生成.onnx格式的模型文件,名称为model.onnx。
116 - 执行ATC工具命令(关于ATC工具的详细说明,请前往[昇腾社区](https://www.hiascend.com)搜索ATC离线模型编译工具),`soc_version`请根据实际环境修改:120 - 执行ATC工具命令(关于ATC工具的详细说明,请前往[昇腾社区](https://www.hiascend.com)搜索ATC离线模型编译工具),`soc_version`请根据实际环境修改:
121+ 
117 ```122 ```
118 atc --model=./model.onnx --framework=5 --soc_version=xxx --output=./model123 atc --model=./model.onnx --framework=5 --soc_version=xxx --output=./model
119 ```124 ```
125+ 
120 - 日志中出现如下打印:126 - 日志中出现如下打印:
127+ 
121 ```128 ```
122 ConvTransFormatPass is starting129 ConvTransFormatPass is starting
123 Remove output edges success130 Remove output edges success
@@ -127,14 +134,19 @@
127 134 
1283. 在线推理1353. 在线推理
129 - 设置环境变量,dump出编译过程中的模型图:136 - 设置环境变量,dump出编译过程中的模型图:
137+ 
130 ```138 ```
131 export DUMP_GE_GRAPH=1139 export DUMP_GE_GRAPH=1
132 ```140 ```
141+ 
133 - 进入data目录执行.py文件进行在线推理(在线推理请确保已安装torch_npu插件):142 - 进入data目录执行.py文件进行在线推理(在线推理请确保已安装torch_npu插件):
143+ 
134 ```144 ```
135 python torch_forward.py145 python torch_forward.py
136 ```146 ```
147+ 
137 - 日志中出现如下打印:148 - 日志中出现如下打印:
149+ 
138 ```150 ```
139 ConvTransFormatPass is starting151 ConvTransFormatPass is starting
140 Remove output edges success152 Remove output edges success
@@ -152,6 +164,7 @@
152 可以发现模型已按预期优化,即卷积算子的`data_format`被修改为`NHWC`,卷积算子后的`transpose`被删除。164 可以发现模型已按预期优化,即卷积算子的`data_format`被修改为`NHWC`,卷积算子后的`transpose`被删除。
153 165 
154 - 若未获得预期结果,可设置如下环境变量(如使用atc命令,还需添加参数`--log=debug`)让日志打印到屏幕,来定位原因。166 - 若未获得预期结果,可设置如下环境变量(如使用atc命令,还需添加参数`--log=debug`)让日志打印到屏幕,来定位原因。
167+ 
155 ```bash168 ```bash
156 export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕169 export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕
157 export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别170 export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别
@@ -23,7 +23,7 @@ This example uses eager style api and fusion interfaces.
23 23 
24- Compiler: GCC >= 7.3.x24- Compiler: GCC >= 7.3.x
25- Python and dependency versions: python>=3.9, pytorch>=2.125- Python and dependency versions: python>=3.9, pytorch>=2.1
26-- Completed [environment preparation](../../../../../docs/zh/build.md).26+- Completed [environment preparation](../../../../../docs/en/build.md).
27 27 
28## Implementation Steps28## Implementation Steps
29 29 
@@ -9,7 +9,7 @@
9### 与 pattern_base_pass 版本的区别9### 与 pattern_base_pass 版本的区别
10 10 
11| 特性 | pattern_base_pass 版本 | graph_base_pass 版本(本样例) |11| 特性 | pattern_base_pass 版本 | graph_base_pass 版本(本样例) |
12-|------|----------------------|------------------------------|12+| ------ | ---------------------- | ------------------------------ |
13| 注册方式 | REG_FUSION_PASS + PatternFusionPass | REGISTER_CUSTOM_PASS + CustomPassFn |13| 注册方式 | REG_FUSION_PASS + PatternFusionPass | REGISTER_CUSTOM_PASS + CustomPassFn |
14| 合并节点数 | 固定 2 节点合并 | 支持全量 N 节点合并 |14| 合并节点数 | 固定 2 节点合并 | 支持全量 N 节点合并 |
15| 依赖 | 需要 gen_es_api、es_all 库 | 仅依赖 graph、register 库 |15| 依赖 | 需要 gen_es_api、es_all 库 | 仅依赖 graph、register 库 |
@@ -82,7 +82,7 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆
82 82 
83 `${ASCEND_PATH}`为CANN软件包安装目录下的cann路径。请替换相关软件包的实际安装路径,例如`${INSTALL_PATH}/cann`。83 `${ASCEND_PATH}`为CANN软件包安装目录下的cann路径。请替换相关软件包的实际安装路径,例如`${INSTALL_PATH}/cann`。
84 84 
85-2. 执行如下命令进行编译,编译结束后,在**build**目录下生成动态库文件**libmmoe_bmm_split_pass.so**。85+1. 执行如下命令进行编译,编译结束后,在**build**目录下生成动态库文件**libmmoe_bmm_split_pass.so**。
86 86 
87 依次执行:87 依次执行:
88 88 
@@ -91,7 +91,7 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆
91 cmake .. && make91 cmake .. && make
92```92```
93 93 
94-3. 成功编译后通过make install将动态库文件libmmoe_bmm_split_pass.so安装到自定义融合pass目录下。94+1. 成功编译后通过make install将动态库文件libmmoe_bmm_split_pass.so安装到自定义融合pass目录下。
95 95 
96```bash96```bash
97 make install97 make install
@@ -111,7 +111,7 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆
111 source ${ASCEND_PATH}/set_env.sh111 source ${ASCEND_PATH}/set_env.sh
112```112```
113 113 
114-2. 使用ATC离线推理。114+1. 使用ATC离线推理。
115 115 
116 - 设置环境变量,dump出编译过程中的模型图:116 - 设置环境变量,dump出编译过程中的模型图:
117 117 
@@ -119,7 +119,7 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆
119 export DUMP_GE_GRAPH=1119 export DUMP_GE_GRAPH=1
120```120```
121 121 
122- - 在**data**目录执行ONNX模型生成脚本:122+- 在**data**目录执行ONNX模型生成脚本:
123 123 
124```bash124```bash
125 python3 gen_onnx.py --experts 4125 python3 gen_onnx.py --experts 4
@@ -127,7 +127,7 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆
127 127 
128 执行结束后,在**data**目录下生成ONNX模型文件**model.onnx**。128 执行结束后,在**data**目录下生成ONNX模型文件**model.onnx**。
129 129 
130- - 执行ATC命令,其中soc_version根据实际模型运行环境填写:130+- 执行ATC命令,其中soc_version根据实际模型运行环境填写:
131 131 
132```bash132```bash
133 atc --model=./model.onnx --framework=5 --soc_version=Ascend910_9362 --output=./model_fused133 atc --model=./model.onnx --framework=5 --soc_version=Ascend910_9362 --output=./model_fused
@@ -135,13 +135,13 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆
135 135 
136 执行完命令后会在**data**目录下生成**model_fused.om**模型文件。136 执行完命令后会在**data**目录下生成**model_fused.om**模型文件。
137 137 
138- - 检查执行结果:138+- 检查执行结果:
139 139 
140- - 自定义Pass生效时,对比NPU编译过程中间dump图,发现模型已按照预期被优化:140+ - 自定义Pass生效时,对比NPU编译过程中间dump图,发现模型已按照预期被优化:
141- - 融合前(PreRunBegin图):存在 N*2 个 MatMul 节点(首层 N + 非首层 N)141+ - 融合前(PreRunBegin图):存在 N*2 个 MatMul 节点(首层 N + 非首层 N)
142- - 融合后(RunCustomPass_AfterInferShape图):首层 N 个 MatMul 保留,非首层 N 个 MatMul 合并为 Pack + BatchMatMulV2 + Split + Squeeze142+ - 融合后(RunCustomPass_AfterInferShape图):首层 N 个 MatMul 保留,非首层 N 个 MatMul 合并为 Pack + BatchMatMulV2 + Split + Squeeze
143 143 
144- - 日志中出现如下打印:144+ - 日志中出现如下打印:
145 145 
146```text146```text
147 MmoeBmmSplitPass begin.147 MmoeBmmSplitPass begin.
@@ -149,7 +149,7 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆
149 MmoeBmmSplitPass end.149 MmoeBmmSplitPass end.
150```150```
151 151 
152-3. 使用一键验证脚本。152+1. 使用一键验证脚本。
153 153 
154```bash154```bash
155 cd data155 cd data
@@ -54,7 +54,7 @@ Pack stacks along the first axis without changing matrix multiplication results.
54- Compiler: GCC >= 7.3.x54- Compiler: GCC >= 7.3.x
55- CANN version >= 8.5.0 (REGISTER_CUSTOM_PASS supported since 8.5.0)55- CANN version >= 8.5.0 (REGISTER_CUSTOM_PASS supported since 8.5.0)
56- Python >= 3.7, depends on onnx, numpy56- Python >= 3.7, depends on onnx, numpy
57-- [Environment preparation](../../../../../docs/zh/build.md) completed.57+- [Environment preparation](../../../../../docs/en/build.md) completed.
58 58 
59## Implementation Steps59## Implementation Steps
60 60 
@@ -9,7 +9,7 @@
9### 与 pattern_base_pass 版本的区别9### 与 pattern_base_pass 版本的区别
10 10 
11| 特性 | pattern_base_pass 版本 | graph_base_pass 版本(本样例) |11| 特性 | pattern_base_pass 版本 | graph_base_pass 版本(本样例) |
12-|------|----------------------|------------------------------|12+| ------ | ---------------------- | ------------------------------ |
13| 注册方式 | REG_FUSION_PASS + FusionBasePass | REGISTER_CUSTOM_PASS + CustomPassFn |13| 注册方式 | REG_FUSION_PASS + FusionBasePass | REGISTER_CUSTOM_PASS + CustomPassFn |
14| 合并节点数 | 固定 2 节点合并 | 支持全量 N 节点合并 |14| 合并节点数 | 固定 2 节点合并 | 支持全量 N 节点合并 |
15| 依赖 | 需要 gen_es_api、es_all 库 | 仅依赖 graph、register 库 |15| 依赖 | 需要 gen_es_api、es_all 库 | 仅依赖 graph、register 库 |
@@ -89,7 +89,7 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N]
89 89 
90 `${ASCEND_PATH}`为CANN软件包安装目录下的cann路径。请替换相关软件包的实际安装路径,例如`${INSTALL_PATH}/cann`。90 `${ASCEND_PATH}`为CANN软件包安装目录下的cann路径。请替换相关软件包的实际安装路径,例如`${INSTALL_PATH}/cann`。
91 91 
92-2. 执行如下命令进行编译,编译结束后,在**build**目录下生成动态库文件**libmmoe_matmul_pass.so**。92+1. 执行如下命令进行编译,编译结束后,在**build**目录下生成动态库文件**libmmoe_matmul_pass.so**。
93 93 
94 依次执行:94 依次执行:
95 95 
@@ -98,7 +98,7 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N]
98 cmake .. && make98 cmake .. && make
99```99```
100 100 
101-3. 成功编译后通过make install将动态库文件libmmoe_matmul_pass.so安装到自定义融合pass目录下。101+1. 成功编译后通过make install将动态库文件libmmoe_matmul_pass.so安装到自定义融合pass目录下。
102 102 
103```bash103```bash
104 make install104 make install
@@ -118,7 +118,7 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N]
118 source ${ASCEND_PATH}/set_env.sh118 source ${ASCEND_PATH}/set_env.sh
119```119```
120 120 
121-2. 使用ATC离线推理。121+1. 使用ATC离线推理。
122 122 
123 - 设置环境变量,dump出编译过程中的模型图:123 - 设置环境变量,dump出编译过程中的模型图:
124 124 
@@ -126,7 +126,7 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N]
126 export DUMP_GE_GRAPH=1126 export DUMP_GE_GRAPH=1
127```127```
128 128 
129- - 在**data**目录执行ONNX模型生成脚本:129+- 在**data**目录执行ONNX模型生成脚本:
130 130 
131```bash131```bash
132 python3 gen_onnx.py --experts 4132 python3 gen_onnx.py --experts 4
@@ -134,7 +134,7 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N]
134 134 
135 执行结束后,在**data**目录下生成ONNX模型文件**model.onnx**。135 执行结束后,在**data**目录下生成ONNX模型文件**model.onnx**。
136 136 
137- - 执行ATC命令,其中soc_version根据实际模型运行环境填写:137+- 执行ATC命令,其中soc_version根据实际模型运行环境填写:
138 138 
139```bash139```bash
140 atc --model=./model.onnx --framework=5 --soc_version=Ascend910B3 --output=./model_fused140 atc --model=./model.onnx --framework=5 --soc_version=Ascend910B3 --output=./model_fused
@@ -142,13 +142,13 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N]
142 142 
143 执行完命令后会在**data**目录下生成**model_fused.om**模型文件。143 执行完命令后会在**data**目录下生成**model_fused.om**模型文件。
144 144 
145- - 检查执行结果:145+- 检查执行结果:
146 146 
147- - 自定义Pass生效时,对比NPU编译过程中间dump图,发现模型已按照预期被优化:147+ - 自定义Pass生效时,对比NPU编译过程中间dump图,发现模型已按照预期被优化:
148- - 融合前(PreRunBegin图):存在 N 个 MatMul 节点148+ - 融合前(PreRunBegin图):存在 N 个 MatMul 节点
149- - 融合后(RunCustomPass_AfterInferShape图):存在 1 个大 MatMul + 1 个 SplitV + 1 个 ConcatV2D149+ - 融合后(RunCustomPass_AfterInferShape图):存在 1 个大 MatMul + 1 个 SplitV + 1 个 ConcatV2D
150 150 
151- - 日志中出现如下打印:151+ - 日志中出现如下打印:
152 152 
153```text153```text
154 MmoeMatmulPass begin.154 MmoeMatmulPass begin.
@@ -158,7 +158,7 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N]
158 MmoeMatmulPass end.158 MmoeMatmulPass end.
159```159```
160 160 
161-3. 使用一键验证脚本。161+1. 使用一键验证脚本。
162 162 
163```bash163```bash
164 cd data164 cd data
@@ -52,7 +52,7 @@ Matrix multiplication is distributive over column concatenation: `x @ [w1 | w2 |
52- Compiler: GCC >= 7.3.x52- Compiler: GCC >= 7.3.x
53- CANN version >= 8.5.0 (REGISTER_CUSTOM_PASS supported since 8.5.0)53- CANN version >= 8.5.0 (REGISTER_CUSTOM_PASS supported since 8.5.0)
54- Python >= 3.7, depends on onnx, numpy54- Python >= 3.7, depends on onnx, numpy
55-- [Environment preparation](../../../../../docs/zh/build.md) completed.55+- [Environment preparation](../../../../../docs/en/build.md) completed.
56 56 
57## Implementation Steps57## Implementation Steps
58 58