TensorRT C++ API安装与配置:从源码编译到CMake集成完整教程
TensorRT C++ API是一个基于Linux/CUDA 12/TensorRT ≥ 10/C++20的高性能深度学习推理库,它提供了简洁易用的接口,帮助开发者快速构建和部署高效的TensorRT推理应用。本教程将详细介绍如何从源码编译安装TensorRT C++ API,并将其集成到CMake项目中,让你轻松上手这一强大的工具。
🌟 准备工作:系统环境与依赖项
在开始安装TensorRT C++ API之前,确保你的系统满足以下要求:
- 操作系统:Linux
- CMake:≥ 3.22
- C++编译器:GCC ≥ 11 或 Clang ≥ 14(支持C++20标准)
- CUDA Toolkit:12.x(需要nvcc编译器,CUDA 13需要驱动版本≥580)
- TensorRT:10.0 – 11.x(可通过apt安装或tarball解压)
可选依赖项:
- spdlog:用于日志功能(通过
-DTRT_CPP_API_WITH_SPDLOG=ON启用) - OpenCV:用于图像处理(通过
-DTRT_CPP_API_WITH_OPENCV=ON启用) - pybind11 + Python 3.9–3.13:用于Python绑定(通过
-DTRT_CPP_API_BUILD_PYTHON=ON启用)
图:TensorRT C++ API开发团队,致力于提供高效的深度学习推理解决方案
📥 获取源码:克隆项目仓库
首先,克隆TensorRT C++ API的项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/te/tensorrt-cpp-api
cd tensorrt-cpp-api
⚙️ 编译选项:定制你的安装
TensorRT C++ API提供了多种编译选项,可根据需求进行定制。主要选项如下:
| 选项 | 默认值 | 说明 |
|---|---|---|
TRT_CPP_API_BUILD_PREPROC | ON | 构建融合预处理子库(::preproc) |
TRT_CPP_API_BUILD_TESTS | OFF | 构建GoogleTest测试套件(使用ctest;GPU测试标记为gpu) |
TRT_CPP_API_BUILD_EXAMPLES | OFF | 构建参考示例 |
TRT_CPP_API_BUILD_PYTHON | OFF | 构建trtcpp pybind11扩展 |
TRT_CPP_API_WITH_OPENCV | OFF | 构建可选的OpenCV互操作头文件/源文件 |
TRT_CPP_API_WITH_SPDLOG | OFF | 构建可选的spdlog日志适配器 |
CMAKE_CUDA_ARCHITECTURES | 75;80;86;89;90 | 覆盖目标GPU架构 |
🔨 源码编译:构建与安装步骤
1. 配置CMake项目
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DTRT_CPP_API_BUILD_PREPROC=ON
# 若使用tarball安装的TensorRT,添加:-DTensorRT_DIR=/path/to/TensorRT-10.x
# 若nvcc不在PATH中,添加:-DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc
2. 编译项目
cmake --build build -j$(nproc)
3. 安装库文件
cmake --install build --prefix /opt/trtcpp
安装完成后,库文件将被安装到/opt/trtcpp目录下,包括:
include/tensorrt_cpp_api/:头文件- 静态库文件
lib/cmake/tensorrt_cpp_api/:CMake配置文件(包含FindTensorRT模块)
📦 CMake集成:在项目中使用TensorRT C++ API
安装完成后,可以通过以下方式将TensorRT C++ API集成到你的CMake项目中:
find_package(tensorrt_cpp_api REQUIRED) # 设置CMAKE_PREFIX_PATH=/opt/trtcpp(若使用tarball TensorRT,还需设置TensorRT_DIR)
add_executable(myapp main.cpp)
target_link_libraries(myapp PRIVATE
tensorrt_cpp_api::tensorrt_cpp_api # 核心库
tensorrt_cpp_api::preproc) # 可选的预处理库
CMake配置会自动解析CUDA、TensorRT、Threads(以及OpenCV/spdlog,如果安装时启用了它们)的依赖,因此你只需确保系统中安装了TensorRT即可。
🐍 Python绑定:安装与使用
如果需要使用Python接口,可以通过以下命令安装:
pip install . # 通过scikit-build-core构建trtcpp wheel
# 若使用tarball TensorRT:pip install . --config-settings=cmake.define.TensorRT_DIR=/opt/TensorRT-10.x
安装完成后,可以验证Python绑定是否正常工作:
python -c "import trtcpp; print(trtcpp.version_string())"
对于零拷贝GPU互操作,需要安装匹配的CuPy(如pip install cupy-cuda12x),更多示例请参考examples/python。
✅ 验证安装:运行测试套件
为确保安装正确,可以构建并运行测试套件:
cmake -S . -B build -DTRT_CPP_API_BUILD_TESTS=ON
cmake --build build -j$(nproc)
ctest --test-dir build -LE gpu # 仅运行CPU测试(无需GPU)
ctest --test-dir build # 运行完整测试套件(需要NVIDIA GPU)
🚫 常见问题:故障排除与解决方案
问题1:构建示例/消费者时出现Could NOT find CUDA: ... required is exact version "12.0"
解决方案:这通常是由于启用了CUDA的OpenCV其CMake配置固定了与你的工具包不同的CUDA版本。库核心不使用OpenCV,因此可以使用默认的-DTRT_CPP_API_WITH_OPENCV=OFF进行构建,并优先使用基于stb的示例(无需OpenCV)。
问题2:出现Failed to detect a default CUDA architecture或nvcc未找到
解决方案:指定nvcc路径:-DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc,或将nvcc添加到PATH中。
问题3:出现Could NOT find TensorRT
解决方案:安装libnvinfer-dev/libnvonnxparsers-dev,或通过-DTensorRT_DIR=<tarball-root>指定TensorRT路径。TensorRT版本必须在10.0–11.x范围内。
问题4:引擎缓存过期导致重建
解决方案:更改ONNX模型、构建选项、驱动/TensorRT版本或GPU都会使缓存的引擎失效,这是正常现象。删除engineCacheDir目录以强制 clean 重建。
📚 进一步学习:文档与示例
- 官方文档:项目中的docs/目录包含详细的安装和使用指南,如docs/install.md和docs/quickstart.md。
- 示例代码:examples/目录提供了多个端到端的示例程序,包括分类、检测、分割和基准测试等。
通过本教程,你已经掌握了TensorRT C++ API的安装、配置和基本使用方法。现在,你可以开始构建自己的高性能深度学习推理应用了!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



