文档
注册

算子工程编译

简介

算子交付件开发完成后,需要对算子工程进行编译,生成自定义算子安装包*.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文件后重新编译算子工程。解决方法如下。
      1. 修改算子工程目录下/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/op_impl/built-in/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/op_impl/built-in/aicpu/aicpu_kernel/lib/${AICPU_SOC_VERSION}/libascend_protobuf.a
                -Wl,--no-whole-archive
            ) 
        endif()
        
        if(EXISTS "${ASCEND_AICPU_PATH}/opp/op_impl/built-in/aicpu/aicpu_kernel/lib/${AICPU_SOC_VERSION}/libcpu_kernels_context.a")
        ...
      2. 参考本章节重新编译算子工程。

编译操作

  1. (可选)修改工程目录下的“cpukernel/CMakeLists.txt”文件。
    • include_directories:添加头文件所在的目录。

      示例如下:

      include_directories(
      directoryPath1
      directoryPath2
      )
    • link_directories:添加库文件所在的目录。

      示例如下:

      link_directories(
      directoryPath3 
      directoryPath4
      )
    • link_libraries:添加算子实现文件的库文件。

      示例如下:

      link_libraries( 
      libName1 
      libName2)

    关于cmake参数的详细介绍,请参见https://cmake.org/cmake/help/latest/guide/tutorial/index.html,选择对应版本后查看参数。

  2. 编译配置。

    在MindStudio工程界面,选中算子工程,单击顶部菜单栏的Build > Edit Build Configuration...

  3. 进入编译配置页面。单击添加新增配置,默认添加编译类型“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(建议配置)
  4. 单击Build > Build Ascend Operator Project进行工程编译
  5. 在界面最下方的窗口查看编译结果,并在算子工程的cmake-build目录下生成自定义算子安装包custom_opp_Linux_Arch.run

    其中Arch的取值根据安装的CANN包和Toolchain的信息获取。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词