已合并
solve the problem of garbled characters in the doc #853
yangyang016创建于 1月21日
solve the problem of garbled characters in the doc #853
已合并
共 8 个文件变更+20-20
| @@ -45,7 +45,7 @@ | |||
| 45 | 如在 Issue 交流中未能达成共识,建议申报 SIG 组双周例会,在会议中进行进一步讨论。 | 45 | 如在 Issue 交流中未能达成共识,建议申报 SIG 组双周例会,在会议中进行进一步讨论。 |
| 46 | 46 | ||
| 47 | #### 3. 提交 PR | 47 | #### 3. 提交 PR |
| 48 | - 在方案确定后,即可开始开发工作。新增算子的交付内容可基于最小交付件结构调整,请参考以下最小交付件进行检查。其中 `${op_name}` 为新增算子名称。 | 48 | + 在方案确定后,即可开始开发工作。新增算子的交付内容可基于最小交付件结构调整,请参考以下最小交付件进行检查。其中 ```${op_name}``` 为新增算子名称。 |
| 49 | ``` | 49 | ``` |
| 50 | ${op_class} # 算子分类 | 50 | ${op_class} # 算子分类 |
| 51 | ├── ${op_name} # 算子名 | 51 | ├── ${op_name} # 算子名 |
| @@ -145,7 +145,7 @@ Self-extractable archive "cann-ops-nn-custom-linux.${arch}.run" successfully cre | |||
| 145 | ```bash | 145 | ```bash |
| 146 | ./build_out/cann-ops-nn-*linux*.run | 146 | ./build_out/cann-ops-nn-*linux*.run |
| 147 | ``` | 147 | ``` |
| 148 | -`AddExample`安装在`${ASCEND_HOME_PATH}/opp/vendors`路径中,`${ASCEND_HOME_PATH}`表示CANN软件安装目录。 | 148 | +`AddExample`安装在```${ASCEND_HOME_PATH}/opp/vendors```路径中,```${ASCEND_HOME_PATH}```表示CANN软件安装目录。 |
| 149 | 149 | ||
| 150 | ### 4. 配置环境变量 | 150 | ### 4. 配置环境变量 |
| 151 | 151 | ||
| @@ -4,15 +4,15 @@ | |||
| 4 | 4 | ||
| 5 | 本章提供了离线编译安装指导,在此之前请确保已按[环境部署](./quick_install.md)完成基础环境搭建。 | 5 | 本章提供了离线编译安装指导,在此之前请确保已按[环境部署](./quick_install.md)完成基础环境搭建。 |
| 6 | ## 获取依赖 | 6 | ## 获取依赖 |
| 7 | -离线编译时,需手动安装如下依赖,否则无法正常编译和执行算子,其中`${cann_3rd_lib_path}`表示第三方软件存放的目录。 | 7 | +离线编译时,需手动安装如下依赖,否则无法正常编译和执行算子,其中```${cann_3rd_lib_path}```表示第三方软件存放的目录。 |
| 8 | 8 | ||
| 9 | - 依赖json | 9 | - 依赖json |
| 10 | 10 | ||
| 11 | -下载[json](https://gitcode.com/cann-src-third-party/json/releases/download/v3.11.3/include.zip),并解压到`${cann_3rd_lib_path}/json/include`,若无该目录请自行创建。 | 11 | +下载[json](https://gitcode.com/cann-src-third-party/json/releases/download/v3.11.3/include.zip),并解压到```${cann_3rd_lib_path}/json/include```,若无该目录请自行创建。 |
| 12 | 12 | ||
| 13 | - 依赖makeself | 13 | - 依赖makeself |
| 14 | 14 | ||
| 15 | -下载[makeself](https://gitcode.com/cann-src-third-party/makeself/releases/download/release-2.5.0-patch1.0/makeself-release-2.5.0-patch1.tar.gz),并解压到`${cann_3rd_lib_path}/makeself`,若无该目录请自行创建。 | 15 | +下载[makeself](https://gitcode.com/cann-src-third-party/makeself/releases/download/release-2.5.0-patch1.0/makeself-release-2.5.0-patch1.tar.gz),并解压到```${cann_3rd_lib_path}/makeself```,若无该目录请自行创建。 |
| 16 | 16 | ||
| 17 | ## 离线编译(自定义算子包) | 17 | ## 离线编译(自定义算子包) |
| 18 | 自定义算子包编译时,需增加--cann_3rd_lib_path配置选项并指定路径,命令如下: | 18 | 自定义算子包编译时,需增加--cann_3rd_lib_path配置选项并指定路径,命令如下: |
| @@ -65,10 +65,10 @@ ${op_name} # 替换为实际算子名的小写下 | |||
| 65 | └── CMakeLists.txt # 算子cmakelist入口 | 65 | └── CMakeLists.txt # 算子cmakelist入口 |
| 66 | ``` | 66 | ``` |
| 67 | 67 | ||
| 68 | -若`${op_class}`为全新算子分类,需额外在`cmake/variables.cmake`的`OP_CATEGORY_LIST`中添加`${op_class}`,否则无法正常编译。 | 68 | +若```${op_class}```为全新算子分类,需额外在`cmake/variables.cmake`的`OP_CATEGORY_LIST`中添加```${op_class}```,否则无法正常编译。 |
| 69 | 69 | ||
| 70 | ## 算子定义 | 70 | ## 算子定义 |
| 71 | -算子定义需要完成两个交付件:`README.md` `${op_name}_def.cpp` | 71 | +算子定义需要完成两个交付件:`README.md` ```${op_name}_def.cpp``` |
| 72 | 72 | ||
| 73 | **交付件1:README.md** | 73 | **交付件1:README.md** |
| 74 | 74 | ||
| @@ -91,7 +91,7 @@ ${op_name} # 替换为实际算子名的小写下 | |||
| 91 | 91 | ||
| 92 | ### 代码实现 | 92 | ### 代码实现 |
| 93 | 93 | ||
| 94 | -Tiling一共需要三个交付件:`${op_name}_tiling.cpp` `${op_name}_tiling_key.h` `${op_name}_tiling_data.h` | 94 | +Tiling一共需要三个交付件:```${op_name}_tiling.cpp``` ```${op_name}_tiling_key.h``` ```${op_name}_tiling_data.h``` |
| 95 | 95 | ||
| 96 | **交付件1:${op_name}_tiling.cpp** | 96 | **交付件1:${op_name}_tiling.cpp** |
| 97 | 97 | ||
| @@ -218,7 +218,7 @@ graph LR | |||
| 218 | 218 | ||
| 219 | ### 代码实现 | 219 | ### 代码实现 |
| 220 | 220 | ||
| 221 | -Kernel一共需要两个交付件:`${op_name}.cpp` `${op_name}.h` | 221 | +Kernel一共需要两个交付件:```${op_name}.cpp``` ```${op_name}.h``` |
| 222 | 222 | ||
| 223 | **交付件1:${op_name}.cpp** | 223 | **交付件1:${op_name}.cpp** |
| 224 | 224 | ||
| @@ -377,11 +377,11 @@ __aicore__ inline void AddExample<T>::Process() | |||
| 377 | # 安装run包 | 377 | # 安装run包 |
| 378 | ./build_out/cann-ops-nn-${vendor_name}-linux.${arch}.run | 378 | ./build_out/cann-ops-nn-${vendor_name}-linux.${arch}.run |
| 379 | ``` | 379 | ``` |
| 380 | - 自定义算子包安装在`${ASCEND_HOME_PATH}/opp/vendors`路径中,`${ASCEND_HOME_PATH}`表示CANN软件安装目录,可提前在环境变量中配置。 | 380 | + 自定义算子包安装在```${ASCEND_HOME_PATH}/opp/vendors```路径中,```${ASCEND_HOME_PATH}```表示CANN软件安装目录,可提前在环境变量中配置。 |
| 381 | 381 | ||
| 382 | 4. **(可选)卸载自定义算子包。** | 382 | 4. **(可选)卸载自定义算子包。** |
| 383 | 383 | ||
| 384 | - 自定义算子包安装后在`${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts`目录会生成`uninstall.sh`,通过该脚本可卸载自定义算子包,命令如下: | 384 | + 自定义算子包安装后在```${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts```目录会生成`uninstall.sh`,通过该脚本可卸载自定义算子包,命令如下: |
| 385 | ```bash | 385 | ```bash |
| 386 | bash ${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts/uninstall.sh | 386 | bash ${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts/uninstall.sh |
| 387 | ``` | 387 | ``` |
| @@ -59,10 +59,10 @@ ${op_name} # 替换为实际算子名的小写下 | |||
| 59 | └── CMakeLists.txt # 算子Cmakelist入口 | 59 | └── CMakeLists.txt # 算子Cmakelist入口 |
| 60 | ``` | 60 | ``` |
| 61 | 61 | ||
| 62 | -若`${op_class}`为全新算子分类,需额外在`cmake/variables.cmake`的`OP_CATEGORY_LIST`中添加`${op_class}`,否则无法正常编译。 | 62 | +若```${op_class}```为全新算子分类,需额外在`cmake/variables.cmake`的`OP_CATEGORY_LIST`中添加```${op_class}```,否则无法正常编译。 |
| 63 | 63 | ||
| 64 | ## 算子定义 | 64 | ## 算子定义 |
| 65 | -算子定义需要完成两个交付件:`README.md` `${op_name}.json` | 65 | +算子定义需要完成两个交付件:`README.md` ```${op_name}.json``` |
| 66 | 66 | ||
| 67 | **交付件1:README.md** | 67 | **交付件1:README.md** |
| 68 | 68 | ||
| @@ -89,13 +89,13 @@ graph LR | |||
| 89 | ``` | 89 | ``` |
| 90 | ### 代码实现 | 90 | ### 代码实现 |
| 91 | 91 | ||
| 92 | -Kernel一共需要两个交付件:`${op_name}_aicpu.cpp` `${op_name}_aicpu.h` | 92 | +Kernel一共需要两个交付件:```${op_name}_aicpu.cpp``` ```${op_name}_aicpu.h``` |
| 93 | 93 | ||
| 94 | **交付件1:${op_name}_aicpu.h** | 94 | **交付件1:${op_name}_aicpu.h** |
| 95 | 95 | ||
| 96 | 算子类声明 | 96 | 算子类声明 |
| 97 | 97 | ||
| 98 | -Kernel实现的第一步,需在头文件`op_kernel_aicpu/${op_name}_aicpu.h`进行算子类的声明,算子类需继承CpuKernel基类。 | 98 | +Kernel实现的第一步,需在头文件```op_kernel_aicpu/${op_name}_aicpu.h```进行算子类的声明,算子类需继承CpuKernel基类。 |
| 99 | 如需查看详细实现,请参考[add_example_aicpu.h](../../../examples/add_example_aicpu/op_kernel_aicpu/add_example_aicpu.h)。 | 99 | 如需查看详细实现,请参考[add_example_aicpu.h](../../../examples/add_example_aicpu/op_kernel_aicpu/add_example_aicpu.h)。 |
| 100 | 100 | ||
| 101 | 101 | ||
| @@ -211,11 +211,11 @@ REGISTER_CPU_KERNEL(kAddExample, AddExampleCpuKernel); | |||
| 211 | # 安装run包 | 211 | # 安装run包 |
| 212 | ./build_out/cann-ops-nn-${vendor_name}-linux.${arch}.run | 212 | ./build_out/cann-ops-nn-${vendor_name}-linux.${arch}.run |
| 213 | ``` | 213 | ``` |
| 214 | - 自定义算子包安装在`${ASCEND_HOME_PATH}/opp/vendors`路径中,`${ASCEND_HOME_PATH}`表示CANN软件安装目录,可提前在环境变量中配置。 | 214 | + 自定义算子包安装在```${ASCEND_HOME_PATH}/opp/vendors```路径中,```${ASCEND_HOME_PATH}```表示CANN软件安装目录,可提前在环境变量中配置。 |
| 215 | 215 | ||
| 216 | 4. **(可选)卸载自定义算子包。** | 216 | 4. **(可选)卸载自定义算子包。** |
| 217 | 217 | ||
| 218 | - 自定义算子包安装后在`${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts`目录会生成`uninstall.sh`,通过该脚本可卸载自定义算子包,命令如下: | 218 | + 自定义算子包安装后在```${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts```目录会生成`uninstall.sh`,通过该脚本可卸载自定义算子包,命令如下: |
| 219 | 219 | ||
| 220 | ```bash | 220 | ```bash |
| 221 | bash ${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts/uninstall.sh | 221 | bash ${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts/uninstall.sh |
| @@ -16,7 +16,7 @@ ${op_name} # 替换为实际算子名的小写下 | |||
| 16 | 16 | ||
| 17 | ## Shape与DataType推导 | 17 | ## Shape与DataType推导 |
| 18 | 18 | ||
| 19 | -图模式需要完成两个交付件 `${op_name}_graph_infer.cpp` `${op_name}_infershape.cpp` | 19 | +图模式需要完成两个交付件 ```${op_name}_graph_infer.cpp``` ```${op_name}_infershape.cpp``` |
| 20 | 20 | ||
| 21 | **交付件1:${op_name}_infershape.cpp** | 21 | **交付件1:${op_name}_infershape.cpp** |
| 22 | 22 | ||
| @@ -48,7 +48,7 @@ | |||
| 48 | 48 | ||
| 49 | 3. **(可选)卸载自定义算子包** | 49 | 3. **(可选)卸载自定义算子包** |
| 50 | 50 | ||
| 51 | - 自定义算子包安装后在`${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts`目录会生成`uninstall.sh`脚本,通过执行该脚本可卸载自定义算子包,具体命令如下: | 51 | + 自定义算子包安装后在```${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts```目录会生成`uninstall.sh`脚本,通过执行该脚本可卸载自定义算子包,具体命令如下: |
| 52 | ```bash | 52 | ```bash |
| 53 | bash ${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts/uninstall.sh | 53 | bash ${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_nn/scripts/uninstall.sh |
| 54 | ``` | 54 | ``` |
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | 为方便调用算子,提供一套基于C的API(以aclnn为前缀API),无需提供IR(Intermediate Representation)定义,方便高效构建模型与应用开发,该方式被称为“单算子API调用”,简称aclnn调用。 | 5 | 为方便调用算子,提供一套基于C的API(以aclnn为前缀API),无需提供IR(Intermediate Representation)定义,方便高效构建模型与应用开发,该方式被称为“单算子API调用”,简称aclnn调用。 |
| 6 | 6 | ||
| 7 | -调用算子API时,需引用依赖的头文件和库文件,一般头文件默认在`${INSTALL_DIR}/include/aclnnop`,库文件默认在`${INSTALL_DIR}/lib64`,具体文件如下: | 7 | +调用算子API时,需引用依赖的头文件和库文件,一般头文件默认在```${INSTALL_DIR}/include/aclnnop```,库文件默认在```${INSTALL_DIR}/lib64```,具体文件如下: |
| 8 | 8 | ||
| 9 | - 依赖的头文件:①方式1 (推荐):引用算子总头文件aclnn\_ops\_\$\{ops\_project\}.h。②方式2:按需引用单算子API头文件aclnn\_\*.h。 | 9 | - 依赖的头文件:①方式1 (推荐):引用算子总头文件aclnn\_ops\_\$\{ops\_project\}.h。②方式2:按需引用单算子API头文件aclnn\_\*.h。 |
| 10 | - 依赖的库文件:按需引用算子总库文件libopapi\_\$\{ops\_project\}.so。 | 10 | - 依赖的库文件:按需引用算子总库文件libopapi\_\$\{ops\_project\}.so。 |