前言
但是本机原来安装的是CUDA10.1,但是TensorRT7的最新版本需要CUDA10.2,所以先重新安装一个CUDA。
TIPs: 因为之前在win平台上使用过tensorrt,得到的唯一一个结论就是:千万要对应版本!!!无论是安装还是后续的部署,tensorrt都需要cuda和平台类型保持一致。
安装CUDA10.2
检查系统信息
- 包括系统版本、GPU型号,确认安装合适版本的CUDA
- 检查gcc版本
gcc --version
# 或者
gcc -v
之前有看到一个说法,CUDA10.2不支持gcc 9,所以最好检查一下。
这里有个问题,我通过ssh连接服务器,但是ssh的终端和直接在服务器上打开的终端显示的内容不一样。
在ssh上能够用gcc --version
查询gcc版本,但是直接在服务器终端上会报错,显示gcc找不到'--version'
这个程序。
但是使用gcc -v
这个指令都能查到gcc版本。
下载CUDA安装包
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run
然后就进入到安装界面了。首先是协议,输入accept
。
接下来是安装选项。因为之前
安装完成后会出现一个summary,然后就是需要设置一下环境变量
设置环境变量
终端上输入sudo vim /etc/profile
,在最后一行后面添加以下内容
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda10.2/lib64
如果无效的话,可以尝试在~/.bashrc
进行修改。
重启后检查环境变量nvcc -V
。
安装CuDNN
下载并解压
下载了CUDA10.2下的cudnn7.6.5,这个搭配是比较经典的。
对下载的cudnn压缩包进行解压。
tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
复制文件
复制文件到CUDA中,并赋予权限。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
验证
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
输出的结果为
说明安装成功
TensorRT7下载安装
下载并解压
tensorrt官网下载
下载的是TRT7.2.3-Ubuntu_18.04-CUDA_10.2的tar包
注意!一定一定要看准版本!!!!
tar -zxvf TensorRT-7.2.3.4.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn8.1.tar.gz
上面下载的是cudnn8.1的…到最后测试的时候报错…
重申!Ubuntu18.04+CUDA10.2+cuDNN7.6.5
所以下载的TRT7.0.0.11版本…trt7.0.0.11下载链接
重新来一次
tar -zxvf TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn7.6.tar.gz
将解压后的文件移动到自己想要存放的位置
添加环境变量
vim ~/.bashrc
,然后修改自己的tensorrt路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/TensorRT-7.0.0.11/lib
输入source ~/.bashrc
激活一下设置
测试
因为主要想使用C++ API,所以没有配置python API
进行测试一下
cd ~/你的路径/TensorRT-7.0.0.11/samples/sampleMNIST
make
执行bin目录下的可执行文件,位置在make
之后的输出中
运行可执行文件
./../../bin/sample_mnist
然后发现没有数据…
后来发现在TensorRT-7.0.0.11/data/mnist
中有个py文件能够下载数据
执行该文件
python downloads_pgms.py
然后在文件夹下会出现10个数字的图片。
此时再进行之前的操作
./../../bin/sample_mnist
得到以下结果
清除之前编译的可执行文件及配置文件
make clean