查看自身系统及相关软件版本
-
查看服务器系统:
cat /proc/version
-
查看cuda版本:
nvcc -version
-
查看cudnn版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
安装TensorRT
从官方地址下载合适版本的TensorRT,基于此,本系统是ubuntu 16.04
, cuda版本是10.0
, cudnn版本是7.6.4.
因此,下载文件TensorRT 7.0.0.11 for Ubuntu 1604 and CUDA 10.0 DEB local repo package deb
和TensorRT 7.0.0.11 for Ubuntu 16.04 and CUDA 10.0 TAR package
这里下载两种格式的,deb和tar文件,如果之前安装cuda是使用deb进行安装的,这里可以直接使用deb进行安装,但是如果cuda不是通过deb进行安装的,那只能通过tar文件进行安装:
# 解压缩
tar -xf TensorRT-7.0.0.11.Ubuntu-16.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz
# 添加环境变量
vim ~/.bashrc
export TRT_PATH=/xxxxxx/TensorRT-7.0.0.11
export PATH=$PATH:$TRT_PATH/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TRT_PATH/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TRT_PATH/targets/x86_64-linux-gnu/lib
ex
source ~/.bashrc
# 安装Python支持,选择对应python版本的whl进行安装
cd /xxxx/TensorRT-7.0.0.11/python
pip install tensorrt-7.0.0.11-cp37-none-linux_x86_64.whl
测试
安装ONNX_tensorrt
git clone --recurse-submodules https://github.com/onnx/onnx-tensorrt.git
cd onnx-tensorrt
# 值得注意的是,这个版本必须要和tensorrt的版本对应
git checkout 7.0
之后再去./third_party/onnx项目下载对应的onnx版本,onnx1.6 针对的是TensorRT7
mkdir build
cd build
# cmake .. -DTENSORRT_ROOT=<tensorrt_install_dir> -DGPU_ARCHS='xxx'
# 从https://developer.nvidia.com/cuda-gpus这里查看你GPU的计算能力,替换上面的'xxx'
cmake .. -DTENSORRT_ROOT=/xxxx/TensorRT-7.0.0.11 -DGPU_ARCHS="70"
make -j 12
中间会出现的问题:
- 问题1:
protobuf
的版本过低
# 命令 whereis `protoc` 可以查看哪些路径下安装了protoc
# 命令 which protoc 可以查看默认选用protoc的路径
# 命令 protoc--version 可以查看当前protoc版本
.[ ~]$ protoc--version
libprotoc 2.5.0
这个时候需要重新编译protoc,操作过程(参考https://askubuntu.com/questions/1072683/how-can-i-install-protoc-on-ubuntu-16-04/1072684)为:
从官方地址下载最新的安装包,例如我这里下载的为protobuf-all-3.17.3.tar.gz
tar -xf protobuf-all-3.17.3.tar.gz
# 更改安装路径
cd protobuf-3.17.3/
./configure
make -j 12
make check
sudo make install
sudo ldconfig # refresh shared library cache
# 设置环境变量,注意将$PATH放在后面
export PATH="/xxxx/protobuf/bin:$PATH"
查看版本
protoc --version
这里附一个附录,是关于怎么添加各种环境变量的
#(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/
#(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/
#执行程序搜索路径
export PATH=$PATH:/usr/local/protobuf/bin/
#c程序头文件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/
#c++程序头文件搜索路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/
#pkg-config 路径
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
-
问题2:
cmake
的版本过低首先从官方地址下载最新的cmake安装包。然后执行如下操作:
wget https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.tar.gz
tar xf cmake-3.13.0-Linux-x86_64.tar.gz
sudo mv cmake-3.13.0-Linux-x86_64 /opt/cmake-3.13.0
sudo ln -sf /opt/cmake-3.13.0/bin/* /usr/bin/
# 验证
cmake --version
或者可以直接执行下面语句完成cmake升级
sudo pip install --upgrade cmake==3.13.2
- 问题3: TensorRT cmake时出现Could NOT find TENSORRt library
声明变量路径即可
export PATH="$PATH:/xxxx/software/TensorRT-7.0.0.11"
然后这个时候,重新回到onnx-tensorrt/build
,执行如下操作:
cd onnx-tensorrt/build
rm -r *
cmake .. -DTENSORRT_ROOT=/xxxx/software/TensorRT-7.0.0.11 -DGPU_ARCHS="70"
make -j 12
sudo make install
# 设置环境变量
vim ~/.bashrc
# 这个环境变量是我自己猜着写的,没想到还真的work了
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/xxxx/software/onnx-tensorrt/lib
export PATH=$PATH:/xxx/software/onnx-tensorrt/bin
source ~/.bashrc
# 测试,输入下面指令看是否有输出
onnx2trt
安装pycuda
pip install 'pycuda>=2017.1.1'
验证
import onnx
import tensorrt
import onnx_tensorrt
参考
-
https://eustomaqua.github.io/2020/2020-04-03-Ubuntu-TensorRT/
-
https://zhuanlan.zhihu.com/p/64053177
-
https://zhuanlan.zhihu.com/p/165359425
-
https://blog.csdn.net/shwan_ma/article/details/103637739
-
https://www.cnblogs.com/darkknightzh/p/11129472.html
-
https://arleyzhang.github.io/articles/7f4b25ce/