本文可作为ubuntu20.04 NVIDIA 3060配置CUDA cuDNN anaconda pytorch过程(20230226)的后续
onnxruntime安装
先在相应的aconoda环境进行python,然后输入import onnxruntime
检查有无安装onnxruntime
若没有安装,相应的aconoda环境的终端输入 pip install onnxruntime-gpu
,如果安装了cpu版本的,先卸载 pip uninstall onnxruntime
TensorRT安装
这是一个很令人头秃的过程。
1.参考文献
我在安装过程中,参考了以下链接
TensorRT安装配置完成有感(含各种命令行保姆级教程)
TensorRT学习笔记–Ubuntu20.04安装TensorRT 8.2.5
ImportError: libcudnn.so.8: cannot open shared object file: No such file or directory
2.下载
TensorRT下载链接
一定要选择和你的CUDA对应的版本!!!
我的CUDA是11.6,试了好几个,最后选择了8.5.1.7,下载是tar.gz版本的
3.解压、配置环境变量
我准备解压到/usr/local/TensorRT/
中
cd /usr/local/
sudo mkdir TensorRT
sudo cp ~/Downloads/TensorRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.6.tar.gz /usr/local/TensorRT/
cd TensorRT
tar -zxvf TensorRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.6.tar.gz
配置环境变量
打开./bashrc,在最后加上
# tensorRT install
export LD_LIBRARY_PATH=$PATH:/usr/local/TensorRT/TensorRT-8.5.1.7/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=$PATH:/usr/local/TensorRT/TensorRT-8.5.1.7/lib:$LIBRARY_PATH
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/TensorRT/TensorRT-8.5.1.7/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/TensorRT/TensorRT-8.5.1.7/include
然后保存
然后
source ~/.bashrc
然后
cd /usr/local/TensorRT/TensorRT-8.5.1.7/samples/sampleOnnxMNIST
sudo make
cd ../../bin
./sample_onnx_mnist
(注意,不是sudo ./sample_onnx_mnist
要不然可能报./sample_onnx_mnist: error while loading shared libraries: libnvinfer.so.8: cannot open shared object file: No such file or directory,我也不知道为什么)
运行结果如下
4.安装TensorRT库(该步骤每个aconoda环境都要在各自终端来一遍)
cd /usr/local/TensorRT/TensorRT-8.5.1.7/python
# 根据Python版本安装,我的是python3.9
pip install tensorrt-8.2.5.1-cp39-none-linux_x86_64.whl
# 安装依赖
cd /usr/local/TensorRT/TensorRT-8.5.1.7/graphsurgeon
pip install graphsurgeon-0.4.5-py2.py3-none-any.whl
然后在终端运行python,输入以下指令,看看是否成功
import onnxruntime as ort
import tensorrt
print(ort.get_device())
print(ort.get_available_providers())
print(tensorrt.__version__)
可能会报
ImportError: libnvinfer.so.7: cannot open shared object file: No such file or directory
解决方法:
下载你已安装版本的cudnn的tar.gz,我对应的是cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz,然后解压,把inculde和lib64里的文件复制到cuda中
sudo cp ./include/cudnn.h /usr/local/cuda-11.6/include/
sudo cp ./lib/libcudnn* /usr/local/cuda-11.6/lib64/
cd /usr/local/cuda-11.6/
sudo chmod a+r /usr/local/cuda-11.6/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
5.配置pycharm(该部分参考https://zhuanlan.zhihu.com/p/439123487)
打开pycharm,选择相应的环境,运行
import onnxruntime as ort
import tensorrt
print(ort.get_device())
print(ort.get_available_providers())
print(tensorrt.__version__)
会出现
ImportError: libcudnn.so.8: cannot open shared object file: No such file or directory
以及
ImportError: libnvinfer.so.7: cannot open shared object file: No such file or directory
这是因为我们还得在pycharm配置一下cudnn和TensorRT的环境变量
在pycharm上面点击:run —> Edit Configuration
然后点击Environment variables这一栏最右侧的小册子图标
点击加号,添加环境变量,这里有个很重要的点,网上的教程是仅仅把TensorRT的环境变量添加,但是实际上这还需要把cuda的环境变量一起添加,这也是之前说的本地pycharm和linux可能出现的问题之一,而这里必须以绝对路径添加
此外,还要注意的是,CUDA和TensorRT都要添加LD_LIBRARY_PATH,如果分别添加,那么会挤掉一个,所以要放在一栏里,中间用:连接(该部分参考https://blog.csdn.net/hehedadaq/article/details/113531857)
这是添加之后的
这是我.bashrc文件中的