开发者
资源
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

源码编译构建

从PaddlePaddle源码树中构建Paddle Inference,构建完成后配置面向GPU的推理路径,最后完成编译。

  1. 获取PaddlePaddle 3.3.1源码。
    Paddle Inference从PaddlePaddle源码树中构建。
    1
    2
    3
    git clone --branch v3.3.1 --depth 1 https://github.com/PaddlePaddle/Paddle.git 
    cd Paddle 
    git submodule sync --recursive
    

    当不启用OpenVINO时,可跳过third_party/openvino子模块,避免下载未使用依赖。

    1
    2
    3
    git config -f .gitmodules --get-regexp path | awk '{print $2}' \
      | grep -v '^third_party/openvino$' \
      | xargs -r git submodule update --init --recursive --
    
  2. 配置CMake。

    以下配置面向GPU的推理路径,并按单一Ampere架构生成CUDA代码。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    mkdir -p build-inference-cuda13 
    cd build-inference-cuda13
    
    cmake .. \
      -GNinja \
      -DCMAKE_BUILD_TYPE=Release \
      -DWITH_GPU=ON \
      -DWITH_ARM=ON \
      -DWITH_TESTING=OFF \
      -DWITH_DISTRIBUTE=OFF \ 
      -DWITH_NCCL=OFF \
      -DWITH_OPENVINO=OFF \ 
      -DWITH_CUDNN=ON \
      -DWITH_CUDNN_FRONTEND=OFF \
      -DWITH_PYTHON=OFF \
      -DON_INFER=ON \
      -DWITH_INFERENCE_API_TEST=OFF \
      -DWITH_TP_CACHE=ON \
      -DTHIRD_PARTY_CACHE_PATH="$(pwd)/third_party_cache" \
      -DCUDA_ARCH_NAME=Ampere \
      -DCMAKE_CUDA_FLAGS='-DEIGEN_DONT_VECTORIZE -UPADDLE_WITH_SLEEF'
    
    表1 关键参数说明

    参数

    说明

    -DPY_VERSION=3.11

    生成Python 3.11 ABI wheel。

    -DWITH_GPU=ON

    构建GPU版本PaddlePaddle。

    -DWITH_ARM=ON

    启用ARM架构进行构建。

    -DWITH_TESTING=OFF

    不构建测试目标,降低构建时间和依赖规模。

    -DWITH_DISTRIBUTE=OFF

    不启用分布式训练能力。

    -DWITH_NCCL=OFF

    不启用NCCL,多卡通信不纳入最小验证路径。

    -DWITH_OPENVINO=OFF

    不构建OpenVINO后端。

    -DCUDA_ARCH_NAME=Ampere

    面向A100/Ampere架构生成CUDA代码。

    -DCMAKE_CUDA_FLAGS=...

    作用于CUDA编译单元,用于规避AArch64下NVCC解析ARM NEON头文件问题。

  3. 执行编译。
    1
    2
    3
    export MAX_JOBS=8 
    export CMAKE_BUILD_PARALLEL_LEVEL=8 
    ninja -j8
    

    建议使用8并发,兼顾构建速度和系统负载。

    构建完成后,产物目录位于“build-inference-cuda13/paddle_inference_install_dir/”“build-inference-cuda13/paddle_inference_c_install_dir/”

    • C++ API产物示例:
      1
      2
      3
      4
      paddle_inference_install_dir/paddle/include/paddle_inference_api.h 
      paddle_inference_install_dir/paddle/lib/libpaddle_inference.so 
      paddle_inference_install_dir/paddle/lib/libpaddle_inference.a 
      paddle_inference_install_dir/version.txt
      
    • C API产物示例:
      1
      2
      3
      paddle_inference_c_install_dir/paddle/include/pd_inference_api.h 
      paddle_inference_c_install_dir/paddle/lib/libpaddle_inference_c.so 
      paddle_inference_c_install_dir/paddle/lib/libpaddle_inference_c.a