算子工程编译
简介
算子交付件开发完成后,需要对算子工程进行编译,生成自定义算子安装包*.run,详细的编译操作包括:
- 将AI CPU算子代码实现文件*.h与*.cc编译成libcust_aicpu_kernels.so。
- 将AI CPU算子信息定义文件*.ini编译成cust_aicpu_kernel.json。
- 将原型定义文件*.h与*.cc编译成libcust_op_proto.so。
- 将算子适配插件实现文件*.cc编译成libcust_tf_parsers.so。
- Windows操作系统不支持本地编译。
- 旧版本的AI CPU算子工程在使用最新版本的Ascend-cann-toolkit开发套件包时,存在不兼容问题,需要修改CMakeLists.txt文件后重新编译算子工程。解决方法如下。
- 修改算子工程目录下/cpukernel/CMakeLists.txt文件。
... set(AICPU_SOC_VERSION $ENV{AICPU_SOC_VERSION}) message(STATUS "AICPU_SOC_VERSION=${AICPU_SOC_VERSION}") # 添加如下代码 if(EXISTS "${ASCEND_AICPU_PATH}/opp/built-in/op_impl/aicpu/aicpu_kernel/lib/${AICPU_SOC_VERSION}/libascend_protobuf.a") target_link_options(${AICPU_KERNEL_TARGET} PRIVATE -s -Wl,-Bsymbolic -Wl,--exclude-libs=libascend_protobuf.a ) target_link_libraries(${AICPU_KERNEL_TARGET} PRIVATE -Wl,--whole-archive ${ASCEND_AICPU_PATH}/opp/built-in/op_impl/aicpu/aicpu_kernel/lib/${AICPU_SOC_VERSION}/libascend_protobuf.a -Wl,--no-whole-archive ) endif() if(EXISTS "${ASCEND_AICPU_PATH}/opp/built-in/op_impl/aicpu/aicpu_kernel/lib/${AICPU_SOC_VERSION}/libcpu_kernels_context.a") ...
- 参考本章节重新编译算子工程。
- 修改算子工程目录下/cpukernel/CMakeLists.txt文件。
编译操作
- (可选)修改工程目录下的“cpukernel/CMakeLists.txt”文件。
- 编译配置。
在MindStudio工程界面,选中算子工程,单击顶部菜单栏的
。 - 进入编译配置页面。单击添加新增配置,默认添加编译类型“Release(default)”,请参考表1进行编译配置。图1 编译配置页面
表1 编译配置参数说明 参数
说明
Name
配置名称自定义,默认为Release。
Build type
配置类型,可选,默认为Release。
Toolchain
工具链配置器,根据已安装的CANN包预置架构一致的自定义Toolchain,支持本地和远程编译功能。
可单击“Manage toolchains……”自定义配置Toolchain,配置详情请参见Toolchains。
CMake options
CMake选项,默认:“-DCMAKE_BUILD_TYPE=Release”。
Build directory
编译目录相对路径,该路径是相对于工程目录的路径。
Build options
编译加速选项。
Environment variables
环境变量配置:支持编译前配置环境变量。
可直接手动配置或单击符号,在弹出窗中配置管理。
若选用远程Toolchain,将默认添加一个Deployment,用户需要配置环境变量。
在Environment Variables输入框中输入ASCEND_OPP_PATH、ASCEND_TENSOR_COMPILER_INCLUDE、ASCEND_AICPU_PATH环境变量。ASCEND_OPP_PATH=Ascend-cann-toolkit安装目录/ascend-toolkit/latest/opp; ASCEND_TENSOR_COMPILER_INCLUDE=Ascend-cann-toolkit安装目录/ascend-toolkit/latest/include; ASCEND_AICPU_PATH=Ascend-cann-toolkit安装目录/ascend-toolkit/latest
建议用户配置AICPU_KERNEL_TARGET环境变量。并添加软件版本号的后缀,避免后续由于AI CPU软件升级造成自定义AI CPU动态库文件的冲突。若不配置此环境变量,使用默认值:cust_aicpu_kernels。
AICPU_KERNEL_TARGET=cust_aicpu_kernels_3.3.0
若选用本地编译需用户在操作系统中增加环境变量。export ASCEND_AICPU_PATH=Ascend-cann-toolkit安装目录/ascend-toolkit/latest export AICPU_KERNEL_TARGET=cust_aicpu_kernels_3.3.0(建议配置)
- 单击或 进行工程编译。
若编译AI CPU 算子工程时gcc编译报错,解决方法请参见编译AI CPU 算子工程时gcc编译报错。
- 在界面最下方的窗口查看编译结果,并在算子工程的cmake-build目录下生成自定义算子安装包custom_opp_Linux_Arch.run。
其中Arch的取值根据安装的CANN包和Toolchain的信息获取。
父主题: AI CPU算子开发