算子工程参考示例
使用说明
CANN工具提供了Ascend C算子工程样例,供用户学习和参考。
算子工程样例所在路径为:CANN软件安装后文件存储路径中的“tools/msopgen/template/operator_demo_projects/ascendc_operator_sample”。
ascendc_operator_sample目录结构如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ├── build.sh // 编译入口脚本 ├── cmake │ ├── config.cmake // 编译配置文件 │ ├── func.cmake │ ├── intf.cmake │ ├── makeself.cmake │ └── util ├── CMakeLists.txt ├── CMakePresets.json // 编译配置项 ├── framework ├── op_host // host侧实现文件 ├── op_kernel // kernel侧实现文件 ├── scripts └── testcase ├── CMakeLists.txt └── st ├── Wkv_case_dynamic.json //动态shape的ST测试用例定义文件 └── Wkv_case.json //静态shape的ST测试用例定义文件 |
操作步骤
- 执行如下命令将样例工程拷贝至用户自定义工程存放目录,如$HOME/sample。
cp -r $HOME/Ascend/ascend-toolkit/latest/tools/msopgen/template/operator_demo_projects/ascendc_operator_sample $HOME/sample chmod -R 750 $HOME/sample/ascendc_operator_sample
- 进入样例工程所在目录,修改CMakePresets.json中ASCEND_CANN_PACKAGE_PATH为CANN软件包安装路径。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
{ "version": 1, "cmakeMinimumRequired": { "major": 3, "minor": 19, "patch": 0 }, "configurePresets": [ { "name": "default", "displayName": "Default Config", "description": "Default build using Unix Makefiles generator", "generator": "Unix Makefiles", "binaryDir": "${sourceDir}/build_out", "cacheVariables": { "CMAKE_BUILD_TYPE": { "type": "STRING", "value": "Release" }, "ENABLE_SOURCE_PACKAGE": { "type": "BOOL", "value": "True" }, "ENABLE_BINARY_PACKAGE": { "type": "BOOL", "value": "True" }, "ASCEND_COMPUTE_UNIT": { "type": "STRING", "value": "__ASCEND_COMPUTE_UNIT__" //请替换为Atlas 训练系列产品或Atlas A2训练系列产品/Atlas 800I A2推理产品的具体型号 }, "ENABLE_TEST": { "type": "BOOL", "value": "True" }, "vendor_name": { "type": "STRING", "value": "customize" }, "ASCEND_CANN_PACKAGE_PATH": { "type": "PATH", "value": "/usr/local/Ascend/latest" //请替换为toolkit包安装后的实际路径 }, "ASCEND_PYTHON_EXECUTABLE": { "type": "STRING", "value": "python3" }, "CMAKE_INSTALL_PREFIX": { "type": "PATH", "value": "${sourceDir}/build_out" }, "ENABLE_CROSS_COMPILE": { "type": "BOOL", "value": "False" }, "CMAKE_CROSS_PLATFORM_COMPILER": { "type": "PATH", "value": "/usr/bin/aarch64-linux-gnu-g++" } } } ] }
- 进入样例工程的cmake目录,修改config.cmake中ASCEND_COMPUTE_UNIT的配值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
set(CMAKE_CXX_FLAGS_DEBUG "") set(CMAKE_CXX_FLAGS_RELEASE "") if (NOT DEFINED vendor_name) set(vendor_name customize CACHE STRING "") endif() if (NOT DEFINED ASCEND_CANN_PACKAGE_PATH) set(ASCEND_CANN_PACKAGE_PATH /usr/local/Ascend/latest CACHE PATH "") endif() set(ASCEND_TENSOR_COMPILER_PATH ${ASCEND_CANN_PACKAGE_PATH}/compiler) set(ASCEND_CCEC_COMPILER_PATH ${ASCEND_TENSOR_COMPILER_PATH}/ccec_compiler/bin) set(ASCEND_AUTOGEN_PATH ${CMAKE_BINARY_DIR}/autogen) set(ASCEND_COMPUTE_UNIT ascendxxxyy) //配值需与CMakePresets.json文件中的一致 set(ASCEND_FRAMEWORK_TYPE tensorflow) file(MAKE_DIRECTORY ${ASCEND_AUTOGEN_PATH})
- 在样例工程目录下执行如下命令,进行算子工程编译。
./build.sh
编译成功后,会在当前目录下创建build_out目录,并在build_out目录下生成自定义算子安装包custom_opp_<target os>_<target architecture>.run。
- 在自定义算子包所在路径下,执行如下命令,安装自定义算子包。
./custom_opp_<target os>_<target architecture>.run
命令执行成功后,自定义算子包中的相关文件将部署至当前环境中。
- 已完成环境变量的配置,执行如下命令生成/执行测试用例。
${INSTALL_DIR}/python/site-packages/bin/msopst run -i {**.json} -soc {Soc Version} -out {output path}
- run(必选):用于执行算子的ST测试用例。
- -i,--input(必选):算子测试用例定义文件Wkv_case_dynamic.json或Wkv_case.json的路径,可配置为绝对路径或者相对路径。
- -soc,--soc_version(必选):昇腾AI处理器的型号,请根据实际环境进行替换。
- 在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,获取Chip Name信息。实际配置值为AscendChip Name,例如Chip Name取值为xxxyy,实际配置值为Ascendxxxyy。
- -out,--output(可选):生成文件所在路径。
父主题: 典型案例