已合并
【PR】: 修正表格展示问题 #5142
Sophia1213创建于 26 天前
【PR】: 修正表格展示问题 #5142
已合并
共 131 个文件变更+950-298
| @@ -42,7 +42,7 @@ Developers can download the source code of this repository through the following | |||
| 42 | #### Install Dependencies | 42 | #### 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] Note | 45 | + > [!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.x | 48 | - 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] Note | 97 | +> [!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 Compilation | 100 | ### 4.3 Compilation |
| 101 | 101 | ||
| 102 | -> [!NOTE] Note | 102 | +> [!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] Note | 122 | +> [!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 | ||
| 125 | After compilation is complete, users can perform developer testing. | 125 | After 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] Description | 190 | +> [!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 Uninstallation | 193 | ### 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] Note | 203 | + > [!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 Status | 3 | ## 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 Import | 10 | ## Module Import |
| 11 | 11 | ||
| @@ -3,9 +3,9 @@ | |||
| 3 | ## Product Support Status | 3 | ## 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 Import | 10 | ## Module Import |
| 11 | 11 | ||
| @@ -24,7 +24,7 @@ class GeError(RuntimeError): | |||
| 24 | ## Attribute Description | 24 | ## 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 Status | 3 | ## 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 Import | 10 | ## 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 Import | 10 | ## 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 Import | 10 | ## Module Import |
| 11 | 11 | ||
| @@ -3,9 +3,9 @@ | |||
| 3 | ## Product Support Status | 3 | ## 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 Import | 10 | ## 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 Import | 10 | ## 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 Import | 10 | ## 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 Import | 10 | ## 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 Import | 10 | ## Module Import |
| 11 | 11 | ||
| @@ -3,9 +3,9 @@ | |||
| 3 | ## Product Support Status | 3 | ## 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 Import | 10 | ## 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 Import | 10 | ## Module Import |
| 11 | 11 | ||
| @@ -3,9 +3,9 @@ | |||
| 3 | ## Product Support | 3 | ## 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 Import | 10 | ## Module Import |
| 11 | 11 | ||
| @@ -3,9 +3,9 @@ | |||
| 3 | ## Product Support | 3 | ## 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 Import | 10 | ## 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 Import | 10 | ## 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 Description | 10 | ## Functionality Description |
| 11 | 11 | ||
| @@ -5,7 +5,7 @@ Graph类用于表示和操作计算图。 | |||
| 5 | 基本图操作调用示例: | 5 | 基本图操作调用示例: |
| 6 | 6 | ||
| 7 | ```python | 7 | ```python |
| 8 | -from ge.graph import Graph, DataType, Format | 8 | +from ge.graph import Graph, DataType, Format, DumpFormat |
| 9 | 9 | ||
| 10 | # 创建图 | 10 | # 创建图 |
| 11 | graph = Graph("my_graph") | 11 | graph = Graph("my_graph") |
| @@ -6,7 +6,7 @@ Session类用于管理图的执行会话。 | |||
| 6 | 6 | ||
| 7 | ```python | 7 | ```python |
| 8 | from ge.session import Session | 8 | from ge.session import Session |
| 9 | -from ge.graph import Tensor | 9 | +from ge.graph import Tensor, DataType, Format |
| 10 | from ge.ge_global import GeApi | 10 | from ge.ge_global import GeApi |
| 11 | 11 | ||
| 12 | # 初始化 GE | 12 | # 初始化 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.x | 48 | - 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 | + | ||
| 6 | 1. 通过[安装指导](../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包, 并正确配置环境变量 | 9 | 1. 通过[安装指导](../../docs/zh/quick_install.md)正确安装`toolkit`和`ops`包, 并正确配置环境变量 |
| 7 | 2. 通过命令`bash run_sample.sh` 运行脚本 [run_sample.sh](run_sample.sh) | 10 | 2. 通过命令`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 | + | ||
| 48 | 1. 设置变量 && 引入cmake函数 | 60 | 1. 设置变量 && 引入cmake函数 |
| 49 | 2. 定义算子原型库 | 61 | 2. 定义算子原型库 |
| 62 | + | ||
| 50 | ```cmake | 63 | ```cmake |
| 51 | # 注意: | 64 | # 注意: |
| 52 | # 当前为开箱即用示例, 即定义INTERFACE使用已有的原型so | 65 | # 当前为开箱即用示例, 即定义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 | + | ||
| 62 | 3. 通过`add_es_library_and_whl` 或者 `add_es_library` 生成ES API包, 如果需要屏蔽部分算子ES API生成, 则加入参数EXCLUDE_OPS | 76 | 3. 通过`add_es_library_and_whl` 或者 `add_es_library` 生成ES API包, 如果需要屏蔽部分算子ES API生成, 则加入参数EXCLUDE_OPS |
| 77 | + | ||
| 63 | ```cmake | 78 | ```cmake |
| 64 | add_es_library( | 79 | add_es_library( |
| 65 | ES_LINKABLE_AND_ALL_TARGET es_all | 80 | ES_LINKABLE_AND_ALL_TARGET es_all |
| @@ -70,6 +85,7 @@ | |||
| 70 | ``` | 85 | ``` |
| 71 | 86 | ||
| 72 | 4. 引入构建自定义ES API包 | 87 | 4. 引入构建自定义ES API包 |
| 88 | + | ||
| 73 | ```cmake | 89 | ```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}/custom | 98 | ${CMAKE_CURRENT_SOURCE_DIR}/custom |
| 83 | ) | 99 | ) |
| 84 | ``` | 100 | ``` |
| 101 | + | ||
| 85 | 5. 自定义 API包 link | 102 | 5. 自定义 API包 link |
| 103 | + | ||
| 86 | ```cmake | 104 | ```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 | + | ||
| 93 | 1. 确保环境变量已正确设置 | 112 | 1. 确保环境变量已正确设置 |
| 94 | 2. 确保有足够的磁盘空间存储生成的代码文件 | 113 | 2. 确保有足够的磁盘空间存储生成的代码文件 |
| 95 | 3. 生成的代码文件数量取决于系统中注册的算子数量 | 114 | 3. 生成的代码文件数量取决于系统中注册的算子数量 |
| @@ -6,7 +6,7 @@ This Sample aims to guide users on how to customize ES API <br> | |||
| 6 | 6 | ||
| 7 | ## Quick Start | 7 | ## 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 variables | 9 | +1. Follow the [installation guide](../../docs/en/quick_install.md) to correctly install `toolkit` and `ops` packages, and properly configure environment variables |
| 10 | 2. Run the script via command `bash run_sample.sh` [run_sample.sh](run_sample.sh) | 10 | 2. Run the script via command `bash run_sample.sh` [run_sample.sh](run_sample.sh) |
| 11 | 11 | ||
| 12 | ## Expected Results | 12 | ## 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 Plugins | 31 | ### 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 | ```bash | 33 | ```bash |
| 32 | # 执行config目录下的tensorflow原始模型生成脚本: | 34 | # 执行config目录下的tensorflow原始模型生成脚本: |
| 33 | python3 config/model_generator.py | 35 | python3 config/model_generator.py |
| @@ -41,6 +43,7 @@ cd ../output | |||
| 41 | ``` | 43 | ``` |
| 42 | 44 | ||
| 43 | ## 运行样例 | 45 | ## 运行样例 |
| 46 | + | ||
| 44 | numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/cpp/appendices.md#numa_configjson配置): | 47 | numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/cpp/appendices.md#numa_configjson配置): |
| 45 | 48 | ||
| 46 | ```bash | 49 | ```bash |
| @@ -25,7 +25,7 @@ | |||
| 25 | 25 | ||
| 26 | ## Environment Requirements | 26 | ## 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 Compilation | 31 | ## 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 | + | ||
| 45 | numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/python/appendices.md#numa_configjson配置): | 48 | numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考[numa_config字段说明及样例](../../../docs/zh/user_guides/dflow/dflow_dev/python/appendices.md#numa_configjson配置): |
| 46 | 49 | ||
| 47 | ```bash | 50 | ```bash |
| @@ -35,9 +35,9 @@ | |||
| 35 | 35 | ||
| 36 | ## Environment Preparation | 36 | ## 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 | ```angular2html | 9 | ```angular2html |
| 8 | cpp/ | 10 | cpp/ |
| 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 | ``` |
| 25 | source /usr/local/Ascend/cann/set_env.sh | 30 | source /usr/local/Ascend/cann/set_env.sh |
| 26 | ``` | 31 | ``` |
| 32 | + | ||
| 27 | ### 3.2、编译和执行 | 33 | ### 3.2、编译和执行 |
| 28 | 34 | ||
| 29 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 35 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 36 | + | ||
| 30 | ```bash | 37 | ```bash |
| 31 | bash run_sample.sh | 38 | bash 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 | ```bash | 57 | ```bash |
| 47 | bash run_sample.sh -t sample_and_run | 58 | bash run_sample.sh -t sample_and_run |
| 48 | ``` | 59 | ``` |
| 60 | + | ||
| 49 | 该命令会: | 61 | 该命令会: |
| 62 | + | ||
| 50 | 1. 自动生成ES接口 | 63 | 1. 自动生成ES接口 |
| 51 | 2. 编译sample程序 | 64 | 2. 编译sample程序 |
| 52 | 3. 生成dump图、运行图并输出计算结果 | 65 | 3. 生成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 | ```bash | 79 | ```bash |
| 62 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 80 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 63 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 81 | export 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 | ```bash | 88 | ```bash |
| 68 | export DUMP_GE_GRAPH=2 | 89 | export 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. 清理 |
| 134 | EsDestroyGraphBuilder(builder); | 158 | EsDestroyGraphBuilder(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 Package | 24 | ### 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 | ```bash | 29 | ```bash |
| @@ -1,9 +1,11 @@ | |||
| 1 | # 样例使用指导 | 1 | # 样例使用指导 |
| 2 | 2 | ||
| 3 | ## 1、功能描述 | 3 | ## 1、功能描述 |
| 4 | + | ||
| 4 | 本样例使用控制边进行构图,旨在帮助构图开发者快速理解控制边的概念和使用控制边进行构图 | 5 | 本样例使用控制边进行构图,旨在帮助构图开发者快速理解控制边的概念和使用控制边进行构图 |
| 5 | 6 | ||
| 6 | ## 2、目录结构 | 7 | ## 2、目录结构 |
| 8 | + | ||
| 7 | ```angular2html | 9 | ```angular2html |
| 8 | python/ | 10 | python/ |
| 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 | ``` |
| 22 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 28 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 29 | ``` | 35 | ``` |
| 36 | + | ||
| 30 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 31 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 32 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 33 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 47 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 48 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 53 | export DUMP_GE_GRAPH=2 | 69 | export 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 Package | 20 | ### 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 | ```bash | 25 | ```bash |
| @@ -1,9 +1,11 @@ | |||
| 1 | # 样例使用指导 | 1 | # 样例使用指导 |
| 2 | 2 | ||
| 3 | ## 1、功能描述 | 3 | ## 1、功能描述 |
| 4 | + | ||
| 4 | 本样例使用控制算子进行构图,旨在帮助构图开发者快速上手控制算子的定义和使用 | 5 | 本样例使用控制算子进行构图,旨在帮助构图开发者快速上手控制算子的定义和使用 |
| 5 | 6 | ||
| 6 | ## 2、目录结构 | 7 | ## 2、目录结构 |
| 8 | + | ||
| 7 | ```angular2html | 9 | ```angular2html |
| 8 | python/ | 10 | python/ |
| 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 | ``` |
| 22 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 27 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 28 | ``` | 35 | ``` |
| 36 | + | ||
| 29 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 30 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 31 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 32 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 46 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 47 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 52 | export DUMP_GE_GRAPH=2 | 69 | export 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 | - 函数名:If | 104 | - 函数名:If |
| 82 | - 参数:共 5 个,依次为 cond, input, output_num, then_branch, else_branch | 105 | - 参数:共 5 个,依次为 cond, input, output_num, then_branch, else_branch |
| 83 | - 返回值:输出 output | 106 | - 返回值:输出 output |
| 84 | 107 | ||
| 85 | **Python API中:** | 108 | **Python API中:** |
| 109 | + | ||
| 86 | ``` | 110 | ``` |
| 87 | If(cond: Union[TensorHolder, TensorLike], input: List[Union[TensorHolder, TensorLike]], output_num: int, then_branch: Graph, else_branch: Graph) -> List[TensorHolder]: | 111 | If(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 | 注: |
| 90 | 1、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 | 115 | 1、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 |
| @@ -19,7 +19,7 @@ python/ | |||
| 19 | 19 | ||
| 20 | ### 3.1. Prepare CANN Package | 20 | ### 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 | ```bash | 25 | ```bash |
| @@ -1,8 +1,11 @@ | |||
| 1 | # 样例使用指导 | 1 | # 样例使用指导 |
| 2 | 2 | ||
| 3 | ## 1、功能描述 | 3 | ## 1、功能描述 |
| 4 | + | ||
| 4 | 本样例使用动态输入算子进行构图,旨在帮助构图开发者快速理解动态输入的定义和使用 | 5 | 本样例使用动态输入算子进行构图,旨在帮助构图开发者快速理解动态输入的定义和使用 |
| 6 | + | ||
| 5 | ## 2、目录结构 | 7 | ## 2、目录结构 |
| 8 | + | ||
| 6 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 20 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 25 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 26 | ``` | 35 | ``` |
| 36 | + | ||
| 27 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 28 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 29 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 30 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 44 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 45 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 50 | export DUMP_GE_GRAPH=2 | 69 | export 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 | ||
| 65 | ConcatV2 算子的原型如下所示,ES 构图生成的API是`ConcatV2()`,支持在 Python 中使用 | 86 | ConcatV2 算子的原型如下所示,ES 构图生成的API是`ConcatV2()`,支持在 Python 中使用 |
| 87 | + | ||
| 66 | ```bash | 88 | ```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 | - 函数名:ConcatV2 | 99 | - 函数名:ConcatV2 |
| 76 | - 参数:共 3 个,依次为 x, concat_dim, N | 100 | - 参数:共 3 个,依次为 x, concat_dim, N |
| 77 | - 返回值:输出 y | 101 | - 返回值:输出 y |
| 78 | 102 | ||
| 79 | **Python API中:** | 103 | **Python API中:** |
| 104 | + | ||
| 80 | ``` | 105 | ``` |
| 81 | ConcatV2(x: List[Union[TensorHolder, TensorLike]], concat_dim: Union[TensorHolder, TensorLike], *, N: int =1) -> TensorHolder: | 106 | ConcatV2(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 Package | 20 | ### 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 | ```bash | 25 | ```bash |
| @@ -1,8 +1,11 @@ | |||
| 1 | # 样例使用指导 | 1 | # 样例使用指导 |
| 2 | 2 | ||
| 3 | ## 1、功能描述 | 3 | ## 1、功能描述 |
| 4 | + | ||
| 4 | 本样例使用动态输出算子进行构图,旨在帮助构图开发者快速理解动态输出的定义和使用 | 5 | 本样例使用动态输出算子进行构图,旨在帮助构图开发者快速理解动态输出的定义和使用 |
| 6 | + | ||
| 5 | ## 2、目录结构 | 7 | ## 2、目录结构 |
| 8 | + | ||
| 6 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 21 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 26 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 27 | ``` | 35 | ``` |
| 36 | + | ||
| 28 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 29 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 30 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 31 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 44 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 45 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 50 | export DUMP_GE_GRAPH=2 | 69 | export 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_split | 110 | - 参数:共 4 个,依次为 split_dim, x, y_num, num_split |
| 86 | - 返回值:输出 y | 111 | - 返回值:输出 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 | ``` |
| 92 | Split(split_dim: Union[TensorHolder, TensorLike], x: Union[TensorHolder, TensorLike], y_num: int, *, num_split: int) -> List[TensorHolder]: | 118 | Split(split_dim: Union[TensorHolder, TensorLike], x: Union[TensorHolder, TensorLike], y_num: int, *, num_split: int) -> List[TensorHolder]: |
| 93 | ``` | 119 | ``` |
| 120 | + | ||
| 94 | 注: | 121 | 注: |
| 95 | 1、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 | 122 | 1、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 |
| @@ -19,7 +19,7 @@ python/ | |||
| 19 | 19 | ||
| 20 | ### 3.1. Prepare CANN Package | 20 | ### 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 | ```bash | 25 | ```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 | ```angular2html | 9 | ```angular2html |
| 8 | cpp/ | 10 | cpp/ |
| 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 | ``` |
| 29 | source /usr/local/Ascend/cann/set_env.sh | 33 | source /usr/local/Ascend/cann/set_env.sh |
| 30 | ``` | 34 | ``` |
| 31 | 35 | ||
| 32 | ### 3.2、编译和执行 | 36 | ### 3.2、编译和执行 |
| 37 | + | ||
| 33 | #### 1.2.1 生成 es 接口与构建图进行DUMP | 38 | #### 1.2.1 生成 es 接口与构建图进行DUMP |
| 39 | + | ||
| 34 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 40 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 41 | + | ||
| 35 | ```bash | 42 | ```bash |
| 36 | bash run_sample.sh | 43 | bash 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 | ```bash | 72 | ```bash |
| 60 | bash run_sample.sh -t sample_and_run | 73 | bash run_sample.sh -t sample_and_run |
| 61 | ``` | 74 | ``` |
| 62 | 75 | ||
| 63 | 该命令会: | 76 | 该命令会: |
| 77 | + | ||
| 64 | 1. 自动生成ES接口 | 78 | 1. 自动生成ES接口 |
| 65 | 2. 编译sample程序 | 79 | 2. 编译sample程序 |
| 66 | 3. 自动配置 rank table 和环境变量(`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`) | 80 | 3. 自动配置 rank table 和环境变量(`RANK_TABLE_FILE`、`RANK_ID`、`DEVICE_ID`) |
| @@ -68,32 +82,40 @@ bash run_sample.sh -t sample_and_run | |||
| 68 | 5. 使用HcomAllReduce进行卡间数据同步 | 82 | 5. 使用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 | ```bash | 102 | ```bash |
| 84 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 103 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 85 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 104 | export 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 | ```bash | 111 | ```bash |
| 91 | export DUMP_GE_GRAPH=2 | 112 | export 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 | ```cpp | 136 | ```cpp |
| 113 | std::map<ge::AscendString, ge::AscendString> config = { | 137 | std::map<ge::AscendString, ge::AscendString> config = { |
| 114 | {"ge.exec.deviceId", device_id}, // 来自环境变量 DEVICE_ID | 138 | {"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 | **概念说明:** |
| 123 | TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图结构。本样例演示了如何使用ES算子构建包含集合通信算子的TP图,实现多卡间的数据同步和并行计算。 | 148 | TP(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 | - 返回值:输出 y | 173 | - 返回值:输出 y |
| 145 | 174 | ||
| 146 | **C API中:** | 175 | **C API中:** |
| 176 | + | ||
| 147 | ``` | 177 | ``` |
| 148 | EsCTensorHolder *EsHcomAllReduce(EsCTensorHolder *x, const char *reduction, const char *group, int64_t fusion, int64_t fusion_id); | 178 | EsCTensorHolder *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 | ``` |
| 152 | EsTensorHolder HcomAllReduce(const EsTensorHolder &x, const char *reduction, const char *group, int64_t fusion=1, int64_t fusion_id=-1); | 184 | EsTensorHolder 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 Package | 27 | ### 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 | ```bash | 32 | ```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 | ```angular2html | 9 | ```angular2html |
| 8 | python/ | 10 | python/ |
| 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 | ``` |
| 25 | source /usr/local/Ascend/cann/set_env.sh | 29 | source /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 | ```bash | 46 | ```bash |
| 41 | bash run_sample.sh -t sample_and_run_python | 47 | bash run_sample.sh -t sample_and_run_python |
| 42 | ``` | 48 | ``` |
| 43 | 49 | ||
| 44 | 该命令会: | 50 | 该命令会: |
| 51 | + | ||
| 45 | 1. 自动生成ES接口 | 52 | 1. 自动生成ES接口 |
| 46 | 2. 编译sample程序 | 53 | 2. 编译sample程序 |
| 47 | 3. dump图到当前目录 | 54 | 3. dump图到当前目录 |
| 48 | 4. 在2个NPU设备上并行运行TP图(设备ID从 rank_table 自动读取) | 55 | 4. 在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 | ```bash | 78 | ```bash |
| 67 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 79 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 68 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 80 | export 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 | ```bash | 87 | ```bash |
| 73 | export DUMP_GE_GRAPH=2 | 88 | export 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 | ```python | 112 | ```python |
| 95 | config = { | 113 | config = { |
| 96 | "ge.exec.deviceId": str(device_id), # 来自环境变量 DEVICE_ID | 114 | "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 | **概念说明:** |
| 105 | TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图结构。本样例演示了如何使用ES算子构建包含集合通信算子的TP图,实现多卡间的数据同步和并行计算。 | 124 | TP(Tensor Parallel)图是指通过张量并行方式在多卡上运行的图结构。本样例演示了如何使用ES算子构建包含集合通信算子的TP图,实现多卡间的数据同步和并行计算。 |
| 106 | 125 | ||
| 107 | HcomAllReduce 算子原型如下所示,ES 构图生成的API是`HcomAllReduce()`,支持在 Python 中使用 | 126 | HcomAllReduce 算子原型如下所示,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 | - 函数名:HcomAllReduce | 141 | - 函数名:HcomAllReduce |
| 120 | - 参数:共 5 个,依次为 x, reduction, group, fusion(可选,默认1), fusion_id(可选,默认-1) | 142 | - 参数:共 5 个,依次为 x, reduction, group, fusion(可选,默认1), fusion_id(可选,默认-1) |
| 121 | - 返回值:输出 y | 143 | - 返回值:输出 y |
| 122 | 144 | ||
| 123 | **Python API中:** | 145 | **Python API中:** |
| 146 | + | ||
| 124 | ``` | 147 | ``` |
| 125 | HcomAllReduce(x: TensorHolder, *, reduction: str, group: str, fusion: int = 1, fusion_id: int = -1) -> TensorHolder | 148 | HcomAllReduce(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 Package | 23 | ### 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 | ```bash | 28 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 20 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 25 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 26 | ``` | 35 | ``` |
| 36 | + | ||
| 27 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 28 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 29 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 30 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 44 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 45 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 50 | export DUMP_GE_GRAPH=2 | 69 | export 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 | ```bash | 94 | ```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 | - 函数名:MatMul | 107 | - 函数名:MatMul |
| 83 | - 参数:共 5 个,依次为 x1, x2, bias, transpose_x1, transpose_x2 | 108 | - 参数:共 5 个,依次为 x1, x2, bias, transpose_x1, transpose_x2 |
| 84 | - 返回值:输出 y | 109 | - 返回值:输出 y |
| 85 | 110 | ||
| 86 | **Python API中:** | 111 | **Python API中:** |
| 112 | + | ||
| 87 | ``` | 113 | ``` |
| 88 | Matmul(x1: Union[TensorHolder, TensorLike], x2: Union[TensorHolder, TensorLike], bias: Optional[Union[TensorHolder, TensorLike]] = None, *, transpose_x1: bool = False, transpose_x2: bool = False) -> TensorHolder: | 114 | Matmul(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 | 注: |
| 91 | 1、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 | 118 | 1、使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 |
| @@ -19,7 +19,7 @@ python/ | |||
| 19 | 19 | ||
| 20 | ### 3.1. Prepare CANN Package | 20 | ### 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 | ```bash | 25 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 20 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 25 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 26 | ``` | 35 | ``` |
| 36 | + | ||
| 27 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 28 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 29 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 30 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 44 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 45 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 50 | export DUMP_GE_GRAPH=2 | 69 | export 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 | - 函数名:Relu | 105 | - 函数名:Relu |
| 81 | - 参数:共 1 个,为 x | 106 | - 参数:共 1 个,为 x |
| 82 | - 返回值:输出 y | 107 | - 返回值:输出 y |
| 83 | 108 | ||
| 84 | **Python API中:** | 109 | **Python API中:** |
| 110 | + | ||
| 85 | ``` | 111 | ``` |
| 86 | Relu(x: TensorHolder) -> TensorHolder: | 112 | Relu(x: TensorHolder) -> TensorHolder: |
| 87 | ``` | 113 | ``` |
| @@ -19,7 +19,7 @@ python/ | |||
| 19 | 19 | ||
| 20 | ### 3.1. Prepare CANN Package | 20 | ### 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 | ```bash | 25 | ```bash |
| @@ -1,8 +1,11 @@ | |||
| 1 | # 样例使用指导 | 1 | # 样例使用指导 |
| 2 | 2 | ||
| 3 | ## 1、功能描述 | 3 | ## 1、功能描述 |
| 4 | + | ||
| 4 | 本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义 | 5 | 本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义 |
| 6 | + | ||
| 5 | ## 2、目录结构 | 7 | ## 2、目录结构 |
| 8 | + | ||
| 6 | ```angular2html | 9 | ```angular2html |
| 7 | cpp/ | 10 | cpp/ |
| 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 | ``` |
| 26 | source /usr/local/Ascend/cann/set_env.sh | 31 | source /usr/local/Ascend/cann/set_env.sh |
| 27 | ``` | 32 | ``` |
| 33 | + | ||
| 28 | ### 3.2、编译和执行 | 34 | ### 3.2、编译和执行 |
| 29 | 35 | ||
| 30 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 36 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 37 | + | ||
| 31 | ```bash | 38 | ```bash |
| 32 | bash run_sample.sh | 39 | bash 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 | ```bash | 58 | ```bash |
| 48 | bash run_sample.sh -t sample_and_run | 59 | bash run_sample.sh -t sample_and_run |
| 49 | ``` | 60 | ``` |
| 61 | + | ||
| 50 | 该命令会: | 62 | 该命令会: |
| 63 | + | ||
| 51 | 1. 自动生成ES接口 | 64 | 1. 自动生成ES接口 |
| 52 | 2. 编译sample程序 | 65 | 2. 编译sample程序 |
| 53 | 3. 生成dump图、运行图并输出计算结果 | 66 | 3. 生成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 | ```bash | 80 | ```bash |
| 63 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 81 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 64 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 82 | export 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 | ```bash | 89 | ```bash |
| 69 | export DUMP_GE_GRAPH=2 | 90 | export 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 Package | 25 | ### 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 | ```bash | 30 | ```bash |
| @@ -1,8 +1,11 @@ | |||
| 1 | # 样例使用指导 | 1 | # 样例使用指导 |
| 2 | 2 | ||
| 3 | ## 1、功能描述 | 3 | ## 1、功能描述 |
| 4 | + | ||
| 4 | 本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义 | 5 | 本样例使用操作符重载进行构图,旨在帮助构图开发者快速理解操作符重载的定义 |
| 6 | + | ||
| 5 | ## 2、目录结构 | 7 | ## 2、目录结构 |
| 8 | + | ||
| 6 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 20 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 25 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 26 | ``` | 35 | ``` |
| 36 | + | ||
| 27 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 28 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 29 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 30 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 44 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 45 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 50 | export DUMP_GE_GRAPH=2 | 69 | export 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 Package | 20 | ### 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 | ```bash | 25 | ```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 | ```angular2html | 12 | ```angular2html |
| 11 | cpp/ | 13 | cpp/ |
| 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 | ``` |
| 29 | source /usr/local/Ascend/cann/set_env.sh | 33 | source /usr/local/Ascend/cann/set_env.sh |
| 30 | ``` | 34 | ``` |
| 35 | + | ||
| 31 | ### 3.2、编译和执行 | 36 | ### 3.2、编译和执行 |
| 32 | 37 | ||
| 33 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 38 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 39 | + | ||
| 34 | ```bash | 40 | ```bash |
| 35 | bash run_sample.sh | 41 | bash 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 | ```bash | 60 | ```bash |
| 51 | bash run_sample.sh -t sample_and_run | 61 | bash run_sample.sh -t sample_and_run |
| 52 | ``` | 62 | ``` |
| 63 | + | ||
| 53 | 该命令会: | 64 | 该命令会: |
| 65 | + | ||
| 54 | 1. 自动生成ES接口 | 66 | 1. 自动生成ES接口 |
| 55 | 2. 编译sample程序 | 67 | 2. 编译sample程序 |
| 56 | 3. 生成dump图、运行图并输出计算结果 | 68 | 3. 生成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 | ```bash | 86 | ```bash |
| 69 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 87 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 70 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 88 | export 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 | ```bash | 95 | ```bash |
| 75 | export DUMP_GE_GRAPH=2 | 96 | export 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 Package | 27 | ### 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 | ```bash | 32 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | cpp/ | 10 | cpp/ |
| 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 | ``` |
| 24 | source /usr/local/Ascend/cann/set_env.sh | 30 | source /usr/local/Ascend/cann/set_env.sh |
| 25 | ``` | 31 | ``` |
| 32 | + | ||
| 26 | ### 3.2、编译和执行 | 33 | ### 3.2、编译和执行 |
| 34 | + | ||
| 27 | #### 1.2.1 生成 es 接口与构建图进行DUMP | 35 | #### 1.2.1 生成 es 接口与构建图进行DUMP |
| 36 | + | ||
| 28 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 37 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 38 | + | ||
| 29 | ```bash | 39 | ```bash |
| 30 | bash run_sample.sh | 40 | bash 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 | ```bash | 53 | ```bash |
| 40 | ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看 | 54 | ge_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 | ```bash | 61 | ```bash |
| 47 | bash run_sample.sh -t sample_and_run | 62 | bash run_sample.sh -t sample_and_run |
| 48 | ``` | 63 | ``` |
| 64 | + | ||
| 49 | 该命令会: | 65 | 该命令会: |
| 66 | + | ||
| 50 | 1. 自动生成ES接口 | 67 | 1. 自动生成ES接口 |
| 51 | 2. 编译sample程序 | 68 | 2. 编译sample程序 |
| 52 | 3. 生成dump图、运行图并输出计算结果 | 69 | 3. 生成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 | ```bash | 83 | ```bash |
| 62 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 84 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 63 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 85 | export 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 | ```bash | 92 | ```bash |
| 68 | export DUMP_GE_GRAPH=2 | 93 | export 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 | ```bash | 111 | ```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 | - 函数名:BatchNorm | 133 | - 函数名:BatchNorm |
| 105 | - 参数:共 9 个,依次为 x, scale, offset, mean(可选输入), variance(可选输入), epsilon, data_format, is_training, exponential_avg_factor | 134 | - 参数:共 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_3 | 135 | - 返回值:输出 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 | ``` |
| 110 | EsBatchNormOutput EsBatchNorm(EsCTensorHolder *x, EsCTensorHolder *scale, EsCTensorHolder *offset, EsCTensorHolder *mean, EsCTensorHolder *variance, float epsilon, const char *data_format, bool is_training, float exponential_avg_factor); | 140 | EsBatchNormOutput EsBatchNorm(EsCTensorHolder *x, EsCTensorHolder *scale, EsCTensorHolder *offset, EsCTensorHolder *mean, EsCTensorHolder *variance, float epsilon, const char *data_format, bool is_training, float exponential_avg_factor); |
| 111 | typedef struct { | 141 | typedef 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 | ``` |
| 122 | BatchNormOutput 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); | 154 | BatchNormOutput 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); |
| 123 | struct BatchNormOutput { | 155 | struct 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 Package | 24 | ### 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 | ```bash | 29 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 20 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 25 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 26 | ``` | 35 | ``` |
| 36 | + | ||
| 27 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 28 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 29 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 30 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 44 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 45 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 50 | export DUMP_GE_GRAPH=2 | 69 | export 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 | ```bash | 91 | ```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 | - 函数名:BatchNorm | 113 | - 函数名:BatchNorm |
| 89 | - 参数:共 9 个,依次为 x, scale, offset, mean(可选输入), variance(可选输入), epsilon, data_format, is_training, exponential_avg_factor | 114 | - 参数:共 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_3 | 115 | - 返回值:输出 y, batch_mean, batch_variance, reserve_space_1, reserve_space_2, reserve_space_3 |
| 91 | 116 | ||
| 92 | **Python API中:** | 117 | **Python API中:** |
| 118 | + | ||
| 93 | ```bash | 119 | ```bash |
| 94 | BatchNorm(x: Union[TensorHolder, TensorLike], scale: Union[TensorHolder, TensorLike], offset: Union[TensorHolder, TensorLike], mean: Optional[Union[TensorHolder, TensorLike]] = None, variance: Optional[Union[TensorHolder, TensorLike]] = None, | 120 | BatchNorm(x: Union[TensorHolder, TensorLike], scale: Union[TensorHolder, TensorLike], offset: Union[TensorHolder, TensorLike], mean: Optional[Union[TensorHolder, TensorLike]] = None, variance: Optional[Union[TensorHolder, TensorLike]] = None, |
| 95 | epsilon: float = 0.00100, data_format: str = "NHWC", is_training: bool = True, exponential_avg_factor: float = 0.00100) -> BatchNormOutput: | 121 | epsilon: 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_2 | 131 | self.reserve_space_2 = reserve_space_2 |
| 106 | self.reserve_space_3 = reserve_space_3 | 132 | self.reserve_space_3 = reserve_space_3 |
| 107 | ``` | 133 | ``` |
| 134 | + | ||
| 108 | 注: | 135 | 注: |
| 109 | 1.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 | 136 | 1.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况 |
| 110 | 137 | ||
| @@ -19,7 +19,7 @@ python/ | |||
| 19 | 19 | ||
| 20 | ### 3.1 Prepare CANN Package | 20 | ### 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 | ```bash | 25 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | cpp/ | 10 | cpp/ |
| 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 | ``` |
| 24 | source /usr/local/Ascend/cann/set_env.sh | 30 | source /usr/local/Ascend/cann/set_env.sh |
| 25 | ``` | 31 | ``` |
| 32 | + | ||
| 26 | ### 3.2、编译和执行 | 33 | ### 3.2、编译和执行 |
| 34 | + | ||
| 27 | #### 1.2.1 生成 es 接口与构建图进行DUMP | 35 | #### 1.2.1 生成 es 接口与构建图进行DUMP |
| 36 | + | ||
| 28 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 37 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 38 | + | ||
| 29 | ```bash | 39 | ```bash |
| 30 | bash run_sample.sh | 40 | bash 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 | ```bash | 53 | ```bash |
| 40 | ge_onnx_*.pbtxt - 图结构的protobuf文本格式,可用netron查看 | 54 | ge_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 | ```bash | 61 | ```bash |
| 47 | bash run_sample.sh -t sample_and_run | 62 | bash run_sample.sh -t sample_and_run |
| 48 | ``` | 63 | ``` |
| 64 | + | ||
| 49 | 该命令会: | 65 | 该命令会: |
| 66 | + | ||
| 50 | 1. 自动生成ES接口 | 67 | 1. 自动生成ES接口 |
| 51 | 2. 编译sample程序 | 68 | 2. 编译sample程序 |
| 52 | 3. 生成dump图、运行图并输出计算结果 | 69 | 3. 生成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 | ```bash | 83 | ```bash |
| 62 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 84 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 63 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 85 | export 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 | ```bash | 92 | ```bash |
| 68 | export DUMP_GE_GRAPH=2 | 93 | export 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 Package | 24 | ### 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 | ```bash | 29 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 21 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 33 | ```bash |
| 26 | bash run_sample.sh -t sample_and_run_python | 34 | bash run_sample.sh -t sample_and_run_python |
| 27 | ``` | 35 | ``` |
| 36 | + | ||
| 28 | 该命令会: | 37 | 该命令会: |
| 38 | + | ||
| 29 | 1. 自动生成ES接口 | 39 | 1. 自动生成ES接口 |
| 30 | 2. 编译sample程序 | 40 | 2. 编译sample程序 |
| 31 | 3. 生成dump图并运行该图 | 41 | 3. 生成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 | ```bash | 59 | ```bash |
| 45 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 60 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 46 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 61 | export 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 | ```bash | 68 | ```bash |
| 51 | export DUMP_GE_GRAPH=2 | 69 | export 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 Package | 20 | ### 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 | ```bash | 25 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | cpp/ | 10 | cpp/ |
| 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 | ``` |
| 24 | source /usr/local/Ascend/cann/set_env.sh | 30 | source /usr/local/Ascend/cann/set_env.sh |
| 25 | ``` | 31 | ``` |
| 32 | + | ||
| 26 | ### 3.2、编译和执行 | 33 | ### 3.2、编译和执行 |
| 27 | 34 | ||
| 28 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 35 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 36 | + | ||
| 29 | ```bash | 37 | ```bash |
| 30 | bash run_sample.sh | 38 | bash 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 | ```bash | 57 | ```bash |
| 46 | bash run_sample.sh -t sample_and_run | 58 | bash run_sample.sh -t sample_and_run |
| 47 | ``` | 59 | ``` |
| 60 | + | ||
| 48 | 该命令会: | 61 | 该命令会: |
| 62 | + | ||
| 49 | 1. 自动生成ES接口 | 63 | 1. 自动生成ES接口 |
| 50 | 2. 编译sample程序 | 64 | 2. 编译sample程序 |
| 51 | 3. 生成dump图、运行图并输出计算结果 | 65 | 3. 生成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 | ```bash | 79 | ```bash |
| 61 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 80 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 62 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 81 | export 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 | ```bash | 88 | ```bash |
| 67 | export DUMP_GE_GRAPH=2 | 89 | export 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 Package | 24 | ### 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 | ```bash | 29 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 21 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 34 | ```bash |
| 27 | bash run_sample.sh -t sample_and_run_python | 35 | bash run_sample.sh -t sample_and_run_python |
| 28 | ``` | 36 | ``` |
| 37 | + | ||
| 29 | 该命令会: | 38 | 该命令会: |
| 39 | + | ||
| 30 | 1. 自动生成ES接口 | 40 | 1. 自动生成ES接口 |
| 31 | 2. 编译sample程序 | 41 | 2. 编译sample程序 |
| 32 | 3. 生成dump图并运行该图 | 42 | 3. 生成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 | ```bash | 60 | ```bash |
| 46 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 61 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 47 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 62 | export 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 | ```bash | 69 | ```bash |
| 52 | export DUMP_GE_GRAPH=2 | 70 | export 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 Package | 20 | ### 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 | ```bash | 25 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | cpp/ | 10 | cpp/ |
| 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 | ``` |
| 24 | source /usr/local/Ascend/cann/set_env.sh | 30 | source /usr/local/Ascend/cann/set_env.sh |
| 25 | ``` | 31 | ``` |
| 32 | + | ||
| 26 | ### 3.2、编译和执行 | 33 | ### 3.2、编译和执行 |
| 27 | 34 | ||
| 28 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: | 35 | 只需运行下述命令即可完成清理、生成接口、构图和DUMP图: |
| 36 | + | ||
| 29 | ```bash | 37 | ```bash |
| 30 | bash run_sample.sh | 38 | bash 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 | ```bash | 57 | ```bash |
| 46 | bash run_sample.sh -t sample_and_run | 58 | bash run_sample.sh -t sample_and_run |
| 47 | ``` | 59 | ``` |
| 60 | + | ||
| 48 | 该命令会: | 61 | 该命令会: |
| 62 | + | ||
| 49 | 1. 自动生成ES接口 | 63 | 1. 自动生成ES接口 |
| 50 | 2. 编译sample程序 | 64 | 2. 编译sample程序 |
| 51 | 3. 生成dump图、运行图并输出计算结果 | 65 | 3. 生成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 | ```bash | 79 | ```bash |
| 61 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 80 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 62 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 81 | export 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 | ```bash | 88 | ```bash |
| 67 | export DUMP_GE_GRAPH=2 | 89 | export 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 Package | 24 | ### 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 | ```bash | 29 | ```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 | ```angular2html | 9 | ```angular2html |
| 7 | python/ | 10 | python/ |
| 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 | ``` |
| 21 | source /usr/local/Ascend/cann/set_env.sh | 26 | source /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 | ```bash | 34 | ```bash |
| 27 | bash run_sample.sh -t sample_and_run_python | 35 | bash run_sample.sh -t sample_and_run_python |
| 28 | ``` | 36 | ``` |
| 37 | + | ||
| 29 | 该命令会: | 38 | 该命令会: |
| 39 | + | ||
| 30 | 1. 自动生成ES接口 | 40 | 1. 自动生成ES接口 |
| 31 | 2. 编译sample程序 | 41 | 2. 编译sample程序 |
| 32 | 3. 生成dump图并运行该图 | 42 | 3. 生成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 | ```bash | 60 | ```bash |
| 46 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 | 61 | export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 |
| 47 | export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别 | 62 | export 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 | ```bash | 69 | ```bash |
| 52 | export DUMP_GE_GRAPH=2 | 70 | export 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 Package | 20 | ### 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 | ```bash | 25 | ```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 | ||
| 5 | If this is your first development, it's recommended to read in the following order: | 5 | If 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. |
| 8 | 2. [Python Fusion Pass Development Guide](python_fusion_pass_development_guide.md): Supports runtime integration and `@pattern` expression syntax. | 8 | 2. [Python Fusion Pass Development Guide](python_fusion_pass_development_guide.md): Supports runtime integration and `@pattern` expression syntax. |
| 9 | 3. [C++ Fusion Pass Development Guide](cpp_fusion_pass_development_guide.md): Suitable for product delivery after compiling into `.so`. | 9 | 3. [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 | ||
| 5 | C++ pass 的交付形态是动态库。开发者实现 pass 类,把它注册到 GE,然后编译成 `.so`。GE 编译模型时加载该 `.so`,在指定阶段执行 pass。 | 5 | C++ 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. 选择哪种 pass | 9 | ## 1. 选择哪种 pass |
| 10 | 10 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # C++ Fusion Pass Development Guide | 1 | # 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 | ||
| 5 | C++ 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. | 5 | C++ 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 Order | 403 | ## 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) |
| 406 | 2. [AddZeroPass C++ example](pattern_base_pass/4_add_zero_pass/cpp/README.md) | 406 | 2. [AddZeroPass C++ example](pattern_base_pass/4_add_zero_pass/cpp/README.md) |
| 407 | 3. [MatMul+Add C++ example](pattern_base_pass/1_fuse_matmul_add_pass/cpp/README.md) | 407 | 3. [MatMul+Add C++ example](pattern_base_pass/1_fuse_matmul_add_pass/cpp/README.md) |
| 408 | 4. [capture tensor C++ example](pattern_base_pass/2_fuse_matmul_add_pass_with_capture_tensor/cpp/README.md) | 408 | 4. [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.6 | 21 | - 使用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 build | 55 | mkdir build && cd build |
| 57 | cmake .. && make | 56 | cmake .. && make |
| 58 | ``` | 57 | ``` |
| 58 | + | ||
| 59 | 4. 成功编译后通过make install将动态库文件libfuse_matmul_add_pass.so安装到自定义融合pass目录下。 | 59 | 4. 成功编译后通过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 | - | ||
| 84 | 2. 使用ATC离线推理。 | 83 | 2. 使用ATC离线推理。 |
| 85 | 84 | ||
| 86 | - 设置环境变量,dump出编译过程中的模型图: | 85 | - 设置环境变量,dump出编译过程中的模型图: |
| 86 | + | ||
| 87 | ``` | 87 | ``` |
| 88 | export DUMP_GE_GRAPH=1 | 88 | 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.x | 20 | - Compiler: GCC >= 7.3.x |
| 21 | - Python and dependency versions: python==3.7, TensorFlow==1.15.0, numpy==1.21.6 | 21 | - 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.1 | 25 | - 使用python及其依赖库版本:python>=3.9 、pytorch>=2.1 |
| 26 | - 已完成[相关环境准备](../../../../../docs/zh/build.md)。 | 26 | - 已完成[相关环境准备](../../../../../docs/zh/build.md)。 |
| 27 | 27 | ||
| 28 | - | ||
| 29 | ## 实现步骤 | 28 | ## 实现步骤 |
| 29 | + | ||
| 30 | 1. 定义`MoveReluBeforeConcatPass`类继承`FusionBasePass`。 | 30 | 1. 定义`MoveReluBeforeConcatPass`类继承`FusionBasePass`。 |
| 31 | 2. 重写基类`FusionBasePass`中的`Run`方法,其中实现自定义pass逻辑。 | 31 | 2. 重写基类`FusionBasePass`中的`Run`方法,其中实现自定义pass逻辑。 |
| 32 | 3. 定义`FindConcatNodesMeetRequirements`遍历图中节点,获取符合条件的Concat节点。 | 32 | 3. 定义`FindConcatNodesMeetRequirements`遍历图中节点,获取符合条件的Concat节点。 |
| @@ -70,6 +70,7 @@ | |||
| 70 | 70 | ||
| 71 | 4. 执行make命令编译自定义pass so,成功编译后通过make install将动态库文件libmove_relu_before_concat_pass.so安装到自定义融合pass目录下。 | 71 | 4. 执行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_pass | 75 | make -j$(nproc) move_relu_before_concat_pass |
| 75 | make install | 76 | make install |
| @@ -104,31 +105,44 @@ | |||
| 104 | 2. 使用ATC离线推理。 | 105 | 2. 使用ATC离线推理。 |
| 105 | 106 | ||
| 106 | - 设置环境变量,dump出编译过程中的模型图: | 107 | - 设置环境变量,dump出编译过程中的模型图: |
| 108 | + | ||
| 107 | ``` | 109 | ``` |
| 108 | export DUMP_GE_GRAPH=1 | 110 | 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/build | 116 | export BUILD_PATH=/path/to/build |
| 113 | ``` | 117 | ``` |
| 118 | + | ||
| 114 | - 安装es_all.whl | 119 | - 安装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-*.whl | 122 | 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.py | 134 | 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=./model | 141 | atc --model=./graph.air --framework=1 --soc_version=xxx --output=./model |
| 130 | ``` | 142 | ``` |
| 143 | + | ||
| 131 | - 日志中出现如下打印: | 144 | - 日志中出现如下打印: |
| 145 | + | ||
| 132 | ``` | 146 | ``` |
| 133 | MoveReluBeforeConcatPass | 147 | MoveReluBeforeConcatPass |
| 134 | Define Replacement for MoveReluBeforeConcatPass | 148 | Define Replacement for MoveReluBeforeConcatPass |
| @@ -137,14 +151,19 @@ | |||
| 137 | 151 | ||
| 138 | 3. 在线推理 | 152 | 3. 在线推理 |
| 139 | - 设置环境变量,dump出编译过程中的模型图: | 153 | - 设置环境变量,dump出编译过程中的模型图: |
| 154 | + | ||
| 140 | ``` | 155 | ``` |
| 141 | export DUMP_GE_GRAPH=1 | 156 | 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.py | 162 | python torch_forward.py |
| 146 | ``` | 163 | ``` |
| 164 | + | ||
| 147 | - 日志中出现如下打印: | 165 | - 日志中出现如下打印: |
| 166 | + | ||
| 148 | ``` | 167 | ``` |
| 149 | MoveReluBeforeConcatPass | 168 | MoveReluBeforeConcatPass |
| 150 | Define Replacement for MoveReluBeforeConcatPass | 169 | 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 | ```bash | 184 | ```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.x | 24 | - Compiler: GCC >= 7.3.x |
| 25 | - Python and dependency versions: python>=3.9, pytorch>=2.1 | 25 | - 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 Steps | 28 | ## 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 | ```bash | 140 | ```bash |
| 141 | atc --model=./graph.air --framework=1 --soc_version=xxx --output=./model | 141 | atc --model=./graph.air --framework=1 --soc_version=xxx --output=./model |
| @@ -34,7 +34,6 @@ | |||
| 34 | 5. 定义`DeleteTransposePairBehindIfExist`,广度遍历后续节点,删除转置操作。 | 34 | 5. 定义`DeleteTransposePairBehindIfExist`,广度遍历后续节点,删除转置操作。 |
| 35 | 6. 注册`ConvTransFormatPass`到指定阶段。 | 35 | 6. 注册`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 | ||
| 71 | 4. 执行如下命令编译自定义pass so,并将编译后的动态库文件libmodify_conv_data_format_pass.so安装到自定义融合pass目录下。 | 70 | 4. 执行如下命令编译自定义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_pass | 74 | make -j$(nproc) modify_conv_data_format_pass |
| 75 | make install | 75 | make install |
| @@ -104,20 +104,27 @@ | |||
| 104 | 2. 使用ATC离线推理。 | 104 | 2. 使用ATC离线推理。 |
| 105 | 105 | ||
| 106 | - 设置环境变量,dump出编译过程中的模型图: | 106 | - 设置环境变量,dump出编译过程中的模型图: |
| 107 | + | ||
| 107 | ``` | 108 | ``` |
| 108 | export DUMP_GE_GRAPH=1 | 109 | 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.py | 116 | 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=./model | 123 | atc --model=./model.onnx --framework=5 --soc_version=xxx --output=./model |
| 119 | ``` | 124 | ``` |
| 125 | + | ||
| 120 | - 日志中出现如下打印: | 126 | - 日志中出现如下打印: |
| 127 | + | ||
| 121 | ``` | 128 | ``` |
| 122 | ConvTransFormatPass is starting | 129 | ConvTransFormatPass is starting |
| 123 | Remove output edges success | 130 | Remove output edges success |
| @@ -127,14 +134,19 @@ | |||
| 127 | 134 | ||
| 128 | 3. 在线推理 | 135 | 3. 在线推理 |
| 129 | - 设置环境变量,dump出编译过程中的模型图: | 136 | - 设置环境变量,dump出编译过程中的模型图: |
| 137 | + | ||
| 130 | ``` | 138 | ``` |
| 131 | export DUMP_GE_GRAPH=1 | 139 | 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.py | 145 | python torch_forward.py |
| 136 | ``` | 146 | ``` |
| 147 | + | ||
| 137 | - 日志中出现如下打印: | 148 | - 日志中出现如下打印: |
| 149 | + | ||
| 138 | ``` | 150 | ``` |
| 139 | ConvTransFormatPass is starting | 151 | ConvTransFormatPass is starting |
| 140 | Remove output edges success | 152 | 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 | ```bash | 168 | ```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.x | 24 | - Compiler: GCC >= 7.3.x |
| 25 | - Python and dependency versions: python>=3.9, pytorch>=2.1 | 25 | - 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 Steps | 28 | ## 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 .. && make | 91 | 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 | ```bash | 96 | ```bash |
| 97 | make install | 97 | make install |
| @@ -111,7 +111,7 @@ Pack 沿首轴堆叠不改变矩阵乘法结果,Split + Squeeze 沿首轴拆 | |||
| 111 | source ${ASCEND_PATH}/set_env.sh | 111 | 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=1 | 119 | export DUMP_GE_GRAPH=1 |
| 120 | ``` | 120 | ``` |
| 121 | 121 | ||
| 122 | - - 在**data**目录执行ONNX模型生成脚本: | 122 | +- 在**data**目录执行ONNX模型生成脚本: |
| 123 | 123 | ||
| 124 | ```bash | 124 | ```bash |
| 125 | python3 gen_onnx.py --experts 4 | 125 | 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 | ```bash | 132 | ```bash |
| 133 | atc --model=./model.onnx --framework=5 --soc_version=Ascend910_9362 --output=./model_fused | 133 | 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 + Squeeze | 142 | + - 融合后(RunCustomPass_AfterInferShape图):首层 N 个 MatMul 保留,非首层 N 个 MatMul 合并为 Pack + BatchMatMulV2 + Split + Squeeze |
| 143 | 143 | ||
| 144 | - - 日志中出现如下打印: | 144 | + - 日志中出现如下打印: |
| 145 | 145 | ||
| 146 | ```text | 146 | ```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 | ```bash | 154 | ```bash |
| 155 | cd data | 155 | cd data |
| @@ -54,7 +54,7 @@ Pack stacks along the first axis without changing matrix multiplication results. | |||
| 54 | - Compiler: GCC >= 7.3.x | 54 | - 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, numpy | 56 | - 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 Steps | 59 | ## 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 .. && make | 98 | 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 | ```bash | 103 | ```bash |
| 104 | make install | 104 | make install |
| @@ -118,7 +118,7 @@ Y = x @ W [m, k] @ [k, n*N] = [m, n*N] | |||
| 118 | source ${ASCEND_PATH}/set_env.sh | 118 | 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=1 | 126 | export DUMP_GE_GRAPH=1 |
| 127 | ``` | 127 | ``` |
| 128 | 128 | ||
| 129 | - - 在**data**目录执行ONNX模型生成脚本: | 129 | +- 在**data**目录执行ONNX模型生成脚本: |
| 130 | 130 | ||
| 131 | ```bash | 131 | ```bash |
| 132 | python3 gen_onnx.py --experts 4 | 132 | 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 | ```bash | 139 | ```bash |
| 140 | atc --model=./model.onnx --framework=5 --soc_version=Ascend910B3 --output=./model_fused | 140 | 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 个 ConcatV2D | 149 | + - 融合后(RunCustomPass_AfterInferShape图):存在 1 个大 MatMul + 1 个 SplitV + 1 个 ConcatV2D |
| 150 | 150 | ||
| 151 | - - 日志中出现如下打印: | 151 | + - 日志中出现如下打印: |
| 152 | 152 | ||
| 153 | ```text | 153 | ```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 | ```bash | 163 | ```bash |
| 164 | cd data | 164 | cd data |
| @@ -52,7 +52,7 @@ Matrix multiplication is distributive over column concatenation: `x @ [w1 | w2 | | |||
| 52 | - Compiler: GCC >= 7.3.x | 52 | - 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, numpy | 54 | - 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 Steps | 57 | ## Implementation Steps |
| 58 | 58 | ||
Mexamples/fusion_pass/pattern_base_pass/2_fuse_matmul_add_pass_with_capture_tensor/cpp/README.md+18-1
Mexamples/fusion_pass/pattern_base_pass/2_fuse_matmul_add_pass_with_capture_tensor/cpp/README_en.md+2-2
Mexamples/fusion_pass/pattern_base_pass/6_decompose_grouped_conv_to_splited_pass/python/README.md+1-1