1 首先要先搞清楚自己的系统版本
2 其次要安装nvidia的驱动
ubuntu-drivers devices
可以选择自己想要的驱动安装,也可以选择自动安装
sudo ubuntu-drivers autoinstall
3 选择合适的cuda版本并下载安装
https://developer.nvidia.com/cuda-toolkit-archive
我安装的是cuda 9.1 版本的,直接下载runfile并且按照指示操作。
nvcc -V
验证是否安装成功
4 选择对应版本的cudnn下载并且按照指示操作
https://developer.nvidia.com/rdp/cudnn-archive
为什么我下载16.04 的呢,因为按照官方的版本只能cuda10以上了,但是我不想升级我的tensorflow到2.0版本。
不过也可以用
然后进入deb的目录
sudo dpkg -i + deb 即可 安装
安装anaconda时,需要选择python3.6的版本,但是官网的anaconda都是3.7的,先下下来,然后再退档
conda install python=3.6
然而有可能出现的问题是,anaconda对于权限一直都很迷,我碰上了NotWritableError: The current user does not have write permissions to a required path.
解决办法是:
sudo chown -R $USER:$USER anaconda3
5 创建anaconda下的虚拟环境
conda create -n tensorflow python==3.6
pip install tensorflow-gpu==1.14.0
pip install keras
pip install opencv-python
6 配置python interpreter为虚拟环境中的python
并且在程序开头加上
import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
以此调用gpu来执行神经网
在执行程序时,可以查看gpu使用情况
watch -n 1 nvidia-smi # 每秒刷新gpu使用情况
很多部分的代码还是不能用gpu加速的,所以如果经常看到gpu占用率低是很正常的,但是偶尔会跳到很高的占用率证明gpu已经被调动。
过程中碰到的一些问题及解决办法:
为什么nvcc-V 和nvidia-smi 显示的cuda 版本不一样呢 ?
因为nvcc-V 显示的是cuda Runtime API的版本
而nvidia-smi显示的是cuda Driver API 的版本
只要Driver的版本大于Runtime的应该就可以
一开始我想安装cuda10.2, 但是本身系统已经有9.1, 所以出现了一些错误,并且导致我无法用apt安装任何东西
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
cuda-libraries-dev-10-1 : Depends: libcublas-dev (>= 10.1.0.105) but it is not going to be installed
cuda-samples-10-1 : Depends: libcublas-dev (>= 10.1.0.105) but it is not going to be installed
cuda-visual-tools-10-1 : Depends: libcublas-dev (>= 10.1.0.105) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
解决方法:
sudo rm /etc/apt/sources.list.d/cuda.list
sudo apt-get clean
sudo apt-get update
sudo apt install -f
这个错误我没搞懂是为什么,只能先把解决方法mark在这里
要卸载旧版本的cuda以及cudnn
cd /usr/local
假如cuda要卸载的版本是9.1
sudo ./cuda-9.1/bin/cuda-uninstaller
sudo rm -rf cuda-9.1
卸载cudnn
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*