目前学习tensorRT,因此需要在Ubuntu上配置tensorRT,折腾了一天才装好,整理了一下步骤,以便可以帮助其他人。
安装驱动是最恶心的一个地方,由于和Ubuntu系统兼容性不好的原因,会出现各种神奇的错误,下面是我成功安装好的流程。
sudo apt-get purge nvidia*
sudo vim /etc/modprobe.d/blacklist.conf # 如果没有vim,可以使用gedit
#创建(或打开)了一个blacklist.conf文件
#在里面填充下列代码
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
再输入,命令激活
sudo update-initramfs -u
sudo update-initramfs -u
sudo reboot
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
确认下Nouveau是已经被禁用:
lsmod | grep nouveau
如果没有输出什么东西,则说明已经成功禁用
在登入界面进入tty模式
ctrl + alt+ F1
tty模式为命令行模式,此部分无图片,进去后输出用户名和密码,然后进入命令行,关闭x server
sudo service lightdm stop
sudo init 3
cd NVIDIA安装包指定目录
chmod +x nvidia-----.run
sudo sh nvidia-----.run --no-opengl-files
安装默认yes,直到安装完成,系统会进入登入界面,检查是否成功
nvidia-smi
首先去官网下载cuda9.0,下载完就开始安装cuda9.0.
输入安装命令
sudo sh cuda_9.0.176_384.81_linux.run
(1)按q键跳过安装须知,输入accept 接受
(2)第一个选择,是否安装驱动,输入n,因为上面安装过了
(3)后面的选择都选择y,就好
(4)安装好界面如下,会有一个warning,可以不用管,没有影响,如果按照网上部分的解决方案可能会出现未知崩溃
打开bashrc
sudo vim ~/.bashrc
在里面添加路径
export PATH="/usr/local/cuda-9.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH"
使之生效
source .bashrc #此时终端在用户名目录下 ~
检查是否添加成功
echo $PATH
echo $LD_LIBRARY_PATH
补丁为刚才下载界面下面那些小的文件,可装可不装,一半开始使用影响不大,如果后面遇到问题可以再装
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
最后检查cuda是否安装好
nvcc -V
显示以下,即为成功。
这里可能会出现一个问题——显示的版本为cuda7.5,与安装的版本号不一致
解决方案如下:
sudo apt-get autoremove nvidia-cuda-toolkit
在官网上下载cudnn,需要注册NVIDIA开发者账号,选择与cuda和系统版本号对应的cudnn文件,下载tgz文件,然后解压文件
tar -xzvf cudnn---------.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
查看cudnn版本是否安装好
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
在装完cuda和cudnn,即可以安装tensorRT
下载tar版本的安装包,同样需要登入NVIDIA的开发者账号。
tar -xzvf TensorRT-XXX.tar.gz
$ vim ~/.bashrc # 打开环境变量文件
# 将下面三个环境变量写入环境变量文件并保存
export LD_LIBRARY_PATH=TensorRT解压路径/lib:$LD_LIBRARY_PATH
export CUDA_INSTALL_DIR=/usr/local/cuda-9.0
export CUDNN_INSTALL_DIR=/usr/local/cuda-9.0
# 使刚刚修改的环境变量文件生效
$ source ~/.bashrc
进入tensorRT目录下的Python目录
# 对于python2
$ sudo pip2 install tensorrt-XXX-cp27-cp27mu-linux_x86_64.whl
# 对于python3
$ sudo pip3 install tensorrt-XXX-cp35-cp35m-linux_x86_64.whl
测试TensorRT 是否安装成功,进入python编辑器加载tensorrt:
>>>import tensorrt
这里在加载库时可能就会报错
In file included from src/cpp/cuda.cpp:1:0:
src/cpp/cuda.hpp:14:18: fatal error: cuda.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
原因是找不到cuda.h ,问题是由于在root下,环境变量的地址没有包含cuda
解决方案:
将cuda的安装路径添加到root的环境变量中,在root角色下安装Python的TensorRT包
$ sudo vim /etc/profile.d/cuda.sh
添加:export PATH=/usr/local/cuda-9.0/bin:$PATH
# 这里有个问题就是可能bin下没有cuda.h,所以要查找一下cuda.h在哪,我安装时,它在cuda的include文件夹内,而不是在cuda-9.0下,此处可以随机应变
$ sudo su
$ pip3 install tensorrt-XXX-cp35-cp35mu-linux_x86_64.whl
$ exit
如果还不行,关闭终端再打开就好。
进入uff目录下安装uff包
# 对于python2
$ sudo pip2 install uff-0.1.0rc0-py2.py3-none-any.whl
# 对于python3
$ sudo pip3 install uff-0.1.0rc0-py2.py3-none-any.whl
测试
$ which convert-to-uff
此处会输出uff的安装路径
再次测试TensorRT
$ python3
>>>import tensorrt
>>>tensorrt.__version__
输出TensorRT的版本号,即安装成功。
$ cd TensorRT-XXX/samples/sampleMNIST
$ make clean
$ make
$ cd /TensorRT-XXX/bin(转到bin目录下面,make后的可执行文件在此目录下)
$ ./sample_mnist
出现数字识别结果即安装成功
到此为止,终于安装完了tensorRT,不过学习tensorRT的道路才刚刚开始。