算子kernel侧和host侧实现开发完成后,需要对算子工程进行编译,将自定义算子部署到omg工具中,详细的编译操作包括:
编译AscendC算子kernel侧代码实现文件*.cpp,分为源码发布和二进制发布两种方式。
编译AscendC算子host侧代码实现文件*.cpp、*.h。
上述编译过程示意图如下。
图1 算子工程编译示意图

完成工程编译相关配置。
修改工程目录下的CMakePresets.json cacheVariables的配置项。CMakePresets.json文件内容如下。
{
"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"
},
"ASCEND_COMPUTE_UNIT": {
"type": "STRING",
"value": "kirin9020"
},
"vendor_name": {
"type": "STRING",
"value": "customize"
},
"ASCEND_PYTHON_EXECUTABLE": {
"type": "STRING",
"value": "python3"
},
"CMAKE_INSTALL_PREFIX": {
"type": "PATH",
"value": "${sourceDir}/build_out"
}
}
}
]
} 表1 需要开发者配置的常用参数列表
| 参数名称 | 参数描述 | 默认值 |
|---|---|---|
| CMAKE_BUILD_TYPE | 编译模式选项,可配置为: - “Release”,Release版本,不包含调试信息,编译最终发布的版本。 - “Debug”,“Debug”版本,包含调试信息,便于开发者开发和调试。 | Release |
在算子工程目录下执行如下命令,进行算子工程编译。
./build.sh
编译成功后,会在当前目录下创建build_out目录,并将build_out目录下生成的自定义算子交付件安装到tools_omg中。
如果想单独编译算子kernel,可以在算子工程下执行如下命令:
./build_devices.sh
开发者如果需要该编译过程日志存盘,可以使用环境变量ASCENDC_BUILD_LOG_DIR来控制存储路径。
# 如希望编译日志存储在/home/build_log/,则可以按照如下设置,默认不打开日志存储 export ASCENDC_BUILD_LOG_DIR=/home/build_log/