源码编译构建
从PaddlePaddle源码树中构建Paddle Inference,构建完成后配置面向GPU的推理路径,最后完成编译。
- 获取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 --
- 配置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头文件问题。
- 执行编译。
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
- C++ API产物示例:
父主题: 开发指南