算子工程编译
简介
算子交付件开发完成后,需要对算子工程进行编译,生成自定义算子安装包*.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 编译配置页面 添加新增配置,默认添加编译类型“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(建议配置)
- 单击 或进行工程编译。 或进行工程编译。
- 在界面最下方的窗口查看编译结果,并在算子工程的cmake-build目录下生成自定义算子安装包custom_opp_Linux_Arch.run。其中Arch的取值根据安装的CANN包和Toolchain的信息获取。 
     父主题: AI CPU算子开发