
Paddle-Lite 编译指南NNAdapter 框架下昆仑芯 XPU 的编译参数与部署实践【免费下载链接】Paddle-LitePaddlePaddle High Performance Deep Learning Inference Engine for Mobile and Edge (飞桨高性能深度学习端侧推理引擎项目地址: https://gitcode.com/GitHub_Trending/pa/Paddle-LitePaddle-Lite 通过 NNAdapterAI 硬件统一适配框架支持昆仑芯 XPU可在 x86 与 ARM 服务器如飞腾 FT-2000/64上完成高性能推理部署。本文以 nnadapter_support_kunlunxin_xpu.rst 为骨架系统梳理开启昆仑芯 XPU 支持所需的全部编译参数、底层 SDK 下载与链接逻辑并结合仓库内的编译脚本给出可复制的编译与部署命令。一、昆仑芯 XPU 支持概述Paddle-Lite 已通过算子方式Kernel 接入方式支持昆仑芯 XPU 在 x86 和 ARM 服务器上进行预测部署。所谓“算子方式”是指相关算子由 Paddle-Lite 直接以 Kernel 形式实现并调度到 XPU 设备而非经由第三方推理框架中转。从当前仓库源码结构看NNAdapter 侧对应的昆仑芯设备驱动位于 lite/backends/nnadapter/nnadapter/src/driver/kunlunxin_xtcl该目录下包含engine.cc、engine.h、converter等文件负责将 NNAdapter 算子图转换为昆仑芯侧可执行的描述与调用。关于 NNAdapter 本身可参考 nnadapter_support_introduction.rst它是飞桨推理的 AI 硬件统一适配框架通过开关with_nnadapterOFF/ON默认 OFF控制是否编译。昆仑芯 XPU 即是通过该框架接入的具体硬件后端之一。二、基本编译参数详解开启昆仑芯 XPU 编译需要向编译脚本传递以下参数下表完整继承了关联文档的参数定义参数说明可选范围默认值with_kunlunxin_xpu是否包含 kunlunxin xpu 编译OFF / ONOFFkunlunxin_xpu_sdk_urlkunlunxin xpu sdk 下载链接用户自定义https://baidu-kunlun-product.cdn.bcebos.com/KL-SDK/klsdk-dev_paddlekunlunxin_xpu_sdk_envkunlunxin xpu sdk 环境bdcentos_x86_64/centos7_x86_64/ubuntu_x86_64/kylin_aarch64bdcentos_x86_64x86/kylin_aarch64armkunlunxin_xpu_sdk_root设置 kunlunxin xpu sdk 目录用户自定义空值2.1 参数作用与取值说明with_kunlunxin_xpu总开关置为ON后才会在 Paddle-Lite 编译产物中包含昆仑芯 XPU 相关库文件与算子实现。默认OFF即普通 CPU 编译不携带任何 XPU 依赖。kunlunxin_xpu_sdk_urlSDK 下载基地址。Paddle-Lite 需要两类昆仑芯 SDK 组件xdnnXPU 深度神经网络计算库提供libxpuapi.so与xreXPU runtime 运行库提供libxpurt.so。当该参数未指定时使用仓库默认地址在 x86 与 ARM 交叉编译时通常无需修改只有使用特定私有 SDK 版本时才需要自定义。kunlunxin_xpu_sdk_envSDK 环境标识。它直接决定了从 SDK 服务器拉取的具体 tar 包名称xdnn-${env}.tar.gz、xre-${env}.tar.gz因此必须与宿主机/目标平台的 glibc、架构严格匹配x86 编译默认bdcentos_x86_64ARM 编译默认kylin_aarch64Ubuntu 宿主机下编译 x86 时会自动切换为ubuntu_x86_64。kunlunxin_xpu_sdk_root本地 SDK 目录。该参数优先于自动下载逻辑一旦指定编译时直接链接用户本地的 XTCL/SDK 头文件与库文件不再执行在线下载。三、源码视角SDK 下载与链接的底层逻辑上述参数的实际消费逻辑位于 cmake/backends/xpu.cmake理解它有助于排查编译环境问题环境自动推断当未显式传入XPU_SDK_ENV时脚本根据LITE_WITH_X86/LITE_WITH_ARM自动推断默认值——x86 下为bdcentos_x86_64若宿主机为 ubuntu 则为ubuntu_x86_64ARM 下为kylin_aarch64若宿主环境既非 x86 也非 ARM则直接报错xpu doesnt supported the host env。URL 拼接由XPU_SDK_URL分别拼出xdnn-${env}.tar.gz与xre-${env}.tar.gz两个下载地址。自动下载与安装通过 CMakeExternalProject调用wget下载解压并将头文件目录加入编译包含路径、将libxpuapi.so/libxpurt.so注册为共享导入库参与链接。本地 SDK 优先若指定了XPU_SDK_ROOT则跳过下载逻辑直接使用用户本地 SDK兼容 XTCL 目录结构与新式xdnn/xre目录结构两种布局同时该方式已被注释标记为DEPRECATED官方建议后续统一使用XPU_SDK_URLXPU_SDK_ENV的组合方式。可选 XFT 扩展当with_kunlunxin_xftON时还会额外下载并链接libxft.so昆仑芯高性能算子库其 URL 与 env 由kunlunxin_xft_url/kunlunxin_xft_env单独控制。四、完整编译命令实战4.1 x86 服务器编译在 x86 宿主机上编译适用于 Linux x86 的部署库$ ./lite/tools/build_linux.sh --archx86 --with_kunlunxin_xpuON若编译过程中出现找不到cxx11::符号的错误请将 gcc 切换至 4.8 版本。如果需要自定义 SDK 下载源或指定 SDK 环境可追加参数$ ./lite/tools/build_linux.sh --archx86 \ --with_kunlunxin_xpuON \ --kunlunxin_xpu_sdk_url自定义URL \ --kunlunxin_xpu_sdk_envubuntu_x86_644.2 ARM 服务器armv8编译ARM 环境下需要先设置CC与CXX环境变量分别指向 C 编译器与 C 编译器的路径例如飞腾 FT-2000/64 对应的交叉编译工具链再执行$ export CCpath_to_your_c_compiler $ export CXXpath_to_your_c_compiler $ ./lite/tools/build_linux.sh --archarmv8 --with_kunlunxin_xpuON4.3 编译脚本内支持的完整参数族从 lite/tools/build_linux.sh 的帮助信息可以确认与昆仑芯 XPU 相关的参数还包括以下补充项均为可选参数说明--kunlunxin_xpu_xdnn_urlxdnn SDK 独立下载地址优先级高于kunlunxin_xpu_sdk_url默认空--kunlunxin_xpu_xre_urlxre SDK 独立下载地址优先级高于kunlunxin_xpu_sdk_url默认空--with_kunlunxin_xft是否启用昆仑芯 xft 库默认 OFF--kunlunxin_xft_envxft SDK 环境如bdcentos6u3_x86_64_gcc82等当--with_kunlunxin_xftON且未指定kunlunxin_xft_root时必填--kunlunxin_xft_urlxft SDK 下载地址默认https://klx-sdk-release-public.su.bcebos.com/xft/dev/latest/--kunlunxin_xft_root本地 xft 库目录非空时忽略xft_url与xft_env其中kunlunxin_xpu_xdnn_url/kunlunxin_xpu_xre_url的意义在于当需要分别控制 xdnn 与 xre 两个组件的版本时可绕过统一的sdk_url单独指定二者优先级高于sdk_url。4.4 Windows 编译适配Paddle-Lite 同样提供了 Windows 下的昆仑芯 XPU 编译路径使用 XPU kernel 方案通过build_windows.bat执行$ cd Paddle-Lite $ lite\tools\build_windows.bat with_extra without_python use_vs2017 with_dynamic_crt with_kunlunxin_xpu kunlunxin_xpu_sdk_root D:\xpu_toolchain_windows\output注意 Windows 场景下需通过kunlunxin_xpu_sdk_root显式指定本地 SDK 目录。build_windows.bat的完整环境配置与参数说明可参考 windows_compile_windows.rst。五、编译产物与部署库替换编译完成后x86 产物目录形如build.lite.linux.x86.gcc.kunlunxin_xpu/inference_lite_libarmv8 产物目录形如build.lite.linux.armv8.gcc.kunlunxin_xpu/inference_lite_lib.armlinux.armv8.xpu。部署时需要替换到示例工程目录PaddleLite-generic-demo/libs/PaddleLite/linux/{amd64,arm64}/中的以下文件include/头文件目录lib/xpu/libxpuapi.soXPU API 库提供设备管理与算子实现lib/xpu/libxpurt.so*XPU runtime 运行库lib/xpu/libpaddle_light_api_shared.soLight API 库lib/xpu/libpaddle_full_api_shared.so仅full_publish编译方式下存在。替换头文件后需要重新编译示例程序。完整的示例工程运行图像分类、目标检测与设备环境昆仑芯 AI 加速卡 K100/K200/R200 的驱动安装等说明请参阅 kunlunxin_xpu.md。六、编译环境准备与更多参考x86 宿主编译 x86 库环境准备见 linux_x86_compile_linux_x86.rstARM 宿主编译 ARM 库环境准备见 arm_linux_compile_arm_linux.rst支持的芯片与设备昆仑 818-100推理、818-300训练芯片K100/K200 与 R200 昆仑芯 AI 加速卡详见 kunlunxin_xpu.md 中的“支持现状”一节已支持的 Paddle 算子清单参见 support_operation_list.mdNNAdapter 统一适配框架说明参见 nnadapter_support_introduction.rst。七、小结本文围绕nnadapter_support_kunlunxin_xpu.rst中的四个核心编译参数with_kunlunxin_xpu、kunlunxin_xpu_sdk_url、kunlunxin_xpu_sdk_env、kunlunxin_xpu_sdk_root展开并结合 cmake/backends/xpu.cmake 与 lite/tools/build_linux.sh 说明了 SDK 自动下载、环境推断、本地 SDK 优先等底层机制最后给出了 x86、armv8 与 Windows 三条可复制的编译路径。整体而言开启昆仑芯 XPU 编译只需“一个开关 正确匹配的 SDK 环境标识”其余依赖均可在编译期自动完成这显著降低了在 x86/ARM 服务器上部署昆仑芯加速推理的门槛。【免费下载链接】Paddle-LitePaddlePaddle High Performance Deep Learning Inference Engine for Mobile and Edge (飞桨高性能深度学习端侧推理引擎项目地址: https://gitcode.com/GitHub_Trending/pa/Paddle-Lite创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考