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训练系列产品的具体型号
},
"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
命令执行成功后,自定义算子包中的相关文件将部署至当前环境中。
./msopst run -i {**.json} -soc {Soc Version} -out {output path}