CUDA CUDNN tensorflow 相关安装过程
整个过程需要安装 cuda驱动 cuda软件 cudnn库 tensorflow-gpu
不同平台之间的对应关系不同
平台支持链接平台支持
其中linux x64的支持如图
![linux X64](
如图 gcc的版本需要时4.8
# 命令
gcc -v
确定需要安装的版本:
- tensorflow 2.0
- 对应的cuda版本 10.0
- cudnn版本 7.6.5
- gcc版本4.8
cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
#系统:ubuntu1604
#版本:10.0
#类型:离线安装
#小版本:10.0.130
#硬件对应版本:410.48
#平台:amd64
1.安装cuda驱动程序
查看电脑显卡信息
lspci | grep VGA
进入下载驱动界面链接 选择自己的驱动
注意:硬件版本需要与软件版本对应
需要根据软件版本查找响应的硬件版本链接
安装之前 先卸载所有的nvidia驱动
sudo service lightdm stop # 卸载之前应该先停止 lightdm
sudo /usr/bin/nvidia-uninstall
sudo apt-get --purge remove "nvidia-*"
sudo apt autoremove
sudo apt-get remove --purge nvidia-\*
卸载后,重启
登陆界面同时按下:Ctrl + Alt + F1 ~ F6都可以进入字符界面(tty),再按 Ctrl + Alt + F7就又回到登陆界面了。
禁用mouveau驱动和相关驱动包
sudo gedit /etc/modprobe.d/blacklist.conf
在文件最后一行加入下面的命令,进行屏蔽
blacklist rivafb
blacklist vga16fb
blacklist nouveau
blacklist nvidiafb
blacklist rivatv
测试是否禁用成功
lsmod | grep nouveau
没有输出则表示禁用成功
然后更新
sudo update-initramfs -u
重启
在tty界面操作执行
#获取权限
sudo chmod a+x NVIDIA-Linux-x86_64-410.57.run
#执行
./NVIDIA-Linux-x86_64-410.57.run
#安装
sudo ./NVIDIA-Linux-x86_64-375.20.run –no-x-check –no-nouveau-check #–no-opengl-files
#–no-x-check 安装驱动时关闭X服务
#–no-nouveau-check 安装驱动时禁用nouveau
#–no-opengl-files 只安装驱动文件,不安装OpenGL文件
安装时会出现几个问题:
register the kernel module souces with DKMS? --- NO
当全部完成后 会重启
之前安装出现这个问题
Error:Unable to load the 'nvidia-drm' kernel module .
说是boot security中需要禁用 但是没找到 添加 mouveau驱动屏蔽后解决了
2.安装cuda
安装示例进行选择安装链接
cuda安装过程帮助文档链接
注意cuda-repo-<version>
是对应的版本
`sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb`
`sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub`
`sudo apt-get update`
`sudo apt-get install cuda`
安装完成后 需要更新当前用户的配置文件
安装之后路径 /usr/local/
中会出现两个cuda文件夹 一个cuda 一个cuda-10.0 cuda应该是链接到cuda-10.0的
将安装路径添加到bashrc
sudo gedit ~/.bashrc
$ export PATH=/usr/local/cuda-10.0/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
# 执行命令使路径生效
source ~/.bashrc
输入 nvcc -V
可以看到cuda的版本信息
尝试运行cuda中自带的例子
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
可以看到Result=PASS
成功输出
3.安装cuDNN
cuDNN下载地址链接
选择支持cuda-10.0的版本
- cuDNN v7.6.5
- Library for Linux
下载完成后,解压
tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
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*
查看cnDNN版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2.
问题 cuda安装完后,出现了deviceQuery fail
的问题
重新卸载安装后 问题消失
似乎是 安装完cuda后没有重启
最后运行nvidia-smi 如图
4.安装tensorflow
由于在ubuntu16.04的环境 需要用ros Kinect进行开发 仅支持python2 所以tensorflow需要安装2.7版本
支持GPU的2.7版本 链接
下载后利用pip进行安装
安装完成后 import tensorflow
会发生以下问题:
如果驱动版本和cuda版本不同 会保不兼容的问题 之前安装430驱动与410版本cudanot match
In [1]: import tensorflow as tf
2020-01-25 11:20:08.541504: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer.so.6'; dlerror: libnvinfer.so.6: cannot open shared object file: No such file or directory
2020-01-25 11:20:08.541639: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer_plugin.so.6'; dlerror: libnvinfer_plugin.so.6: cannot open shared object file: No such file or directory
2020-01-25 11:20:08.541689: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:30] Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.
后发现这是tensorRT引起的 虽然不影响使用 但是需要屏蔽warning
后安装1.15.0版本 问题解决