依照CUDA版本下载相对应的CUDNN
下载对应cuda
版本的cudnn
tar -xvzf cudnn-10.0-linux-x64-v7.6.5.32.tgz -C 目的path
#解压缩出来会是一个cuda
资料夹
cd
到cuda
下
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 #测试
下载适合环境的TensorRT版本以及安装
官方 https://developer.nvidia.com/tensorrt
解压缩
tar -xzvf TensorRT-7.0.0.11.Ubuntu-16.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz -C /指定你要的路径
添加环境变量
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<eg:TensorRT-6.x.x.x/lib
source ~/.bashrc
例如: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/你安装的路径/TensorRT-7.0.0.11/lib
进入 TensorRT-7.x.x.x/python
到TRT目录下的python
文件夹
pip install tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl 依照python环境选择相应的安装
中途遇见的问题
pip install tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl 的时候出问题
报错如下
ERROR: tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl is not a supported wheel on this platform
基本上是 python 环境对应的 tensorrt 的版本选错了
注意如果使用conda
可能会遇到该问题, 在conda
下安装请使用pip install
, 不要用pip3
ONNX_tensorrt 安装步骤
确认环境为 TensorRT7
依照以下官方步骤下载到本地
git clone --recurse-submodules https://github.com/onnx/onnx-tensorrt.git
cd onnx-tensorrt
mkdir build
cd build
cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir>
或是
cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir> -DGPU_ARCHS="61"
例如: cmake .. -DTENSORRT_ROOT=/path/to/TensorRT-7.x.x.x -DGPU_ARCHS="61"
sudo make -j8 (记得是在 build 目录下执行)
sudo make install
之后再安装一下 onnx
pip install onnx==1.6.0
安装完成后指令输入 onnx2trt
确认一下,输出以下内容则安装成功
ONNX to TensorRT model parser
Usage: onnx2trt onnx_model.pb
[-o engine_file.trt] (output TensorRT engine)
[-t onnx_model.pbtxt] (output ONNX text file without weights)
[-T onnx_model.pbtxt] (output ONNX text file with weights)
[-m onnx_model_out.pb] (output ONNX model)
[-b max_batch_size (default 32)]
[-w max_workspace_size_bytes (default 1 GiB)]
[-d model_data_type_bit_depth] (32 => float32, 16 => float16)
[-O passes] (optimize onnx model. Argument is a semicolon-separated list of passes)
[-p] (list available optimization passes and exit)
[-l] (list layers and their shapes)
[-g] (debug mode)
[-F] (optimize onnx model in fixed mode)
[-v] (increase verbosity)
[-q] (decrease verbosity)
[-V] (show version information)
[-h] (show help)
确认python
接口正常调用:
python >>
import onnx
import onnx_tensorrt.backend as backend
如果不报错 ~ 那么恭喜 !!!
问题总结
1 python
导入 tensorrt
的时候出现的问题
python >>
import tensorrt
ImportError: libnvinfer.so.7: cannot open shared object file: No such file or directory
原因:没有修改 ~./bashrc
2 sudo make -j8
的时候出现的和 protobuf
有关问题
fatal error: google/protobuf/port_def.inc: 没有那个文件或目录
解决办法:重新安装protobuf
3 有关cuda
的lib
库引用问题
会报一大串这样的问题
对‘cudaMalloc@libcudart.so.10.0’未定义的引用
.......
解决办法:
sudo vim ~/.bashrc
修改环境变量
修改后如下,保存文件
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:"$LD_LIBRARY_PATH:/usr/loacl/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export PATH=/usr/local/cuda/bin:$PATH
激活环境变量 source ~/.bashrc
这个时候如果还没有好的话:
sudo vi /etc/profile.d/cuda.sh
把以下内容复制进去并保存
export PATH=$PATH:/usr/local/cuda/bin
export CUDADIR=/usr/local/cuda
这一个位置也要新建一个文件,如果你装了10.1可能里面会已经有一个cuda10.1.conf不用管它
sudo vi /etc/ld.so.conf.d/cuda.conf
文件里面有这一句
/usr/local/cuda/lib64
应用设置
sudo ldconfig
4 出现 onnx_utils.hpp
文件的报错
报错如下
numeric_limits’ is not a member of ‘std’
原因:表示出错的onnx_utils.hpp
头文件没有包含
解决方案:在文件的开头添加如下include
#include <stdexcept>
#include <limits>
REFERENCE
https://github.com/onnx/onnx-tensorrt
TensorRT7 + Onnx_TensorRT 安装过程记录