CANN工具提供了Ascend C算子工程样例,供用户学习和参考。
算子工程样例所在路径为:CANN软件安装后文件存储路径中的“tools/msopgen/template/operator_demo_projects/ascendc_operator_sample”。
├── 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测试用例定义文件
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
{ "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++" } } } ] }
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}