Ubuntu 16.04 笔记本双显卡安装 CUDA9.0

Ubuntu 16.04 安装CUDA9.0 笔记本双显卡

由于目前多数Python库对CUDA9.0 支持较全,但是对于CUDA9.1 及更高的支持并不能满足要求,所以推荐安装 List:Ubuntu1604+CUDA9.0+cuDNNv7.1.4+Tensorflow,Pytorch

推荐直接安装CUDA,不采用装驱动+CUDA 的方式

安装过程:Ubuntu安装省略,以下教程适用于刚刚装好的系统

Step0: Check

lspci | grep -i nvidia

Step0.5:Knowledge

Linux 文件权限:
以下过程需要经常进行文件的更改,有的需要权限: 开启权限
sudo chmod 777 

Step1: Kernel

如果不改kernel的话可能导致 Kernel source not found 问题:

The driver installation is unable to locate the kernel source. Please make sure that the kernel source packages are installed and set up correctly.If you know that the kernel source packages are installed and set up correctly, you may pass the location of the kernel source with the'--kernel-source-path' flag.
# 查看已安装的Linux内核:
dpkg --list | grep linux-image

# 查看正在使用的Linux内核
uname -r

# 由于CUDA9.0 编译的环境为Linux-4.4.0,所以如果有安装Linux-4.4.0-*的内核不需安装内核,否则需要安装这个版本的内核

# 可安装的内核:
sudo apt-cache  search linux|grep linux-image

# 安装Linux-4.4.0:
sudo apt-get install linux-image-4.4.0-31-generic

sudo apt-get install linux-headers-4.4.0-31-generic   
or: sudo apt-get install linux-headers-$(uname -r) #需要进入4.4.0内核中使用,否则没有用

# 更改此内核为默认启动内核:
sudo gedit /etc/default/grub
## 在文档中找到
GRUB_DEFAULT=0
## 并改为
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-31-generic"
##!!Caution: 即使安装好了内核不在这个内核中启动也会导致崩溃,所以,装好后,要在4.4.0内核中进行安装CUDA

# install dkms
sudo apt-get install dkms

Step2:卸载所有Nvidia有关的驱动

如果不卸载,即使装的驱动是CUDA9.0 要求的更高的版本也会导致问题,不过新的系统可以不用管,

tty1:ctrl+alt+f1
sudo service lightdm stop
sudo apt-get install autoremove --purge nvidia*

Step3: 安装CUDA9.0

#blacklist nouveau:
sudo gedit /etc/modprobe.d/disable-nouveau.conf
## 在最后加两行,并保存:
blacklist nouveau
options nouveau modeset = 0

## shell input:
sudo ldconfig
sudo update-initramfs -u

##查看是否已被禁用:(已禁用则无输出)
sudo lspci | grep nouveau

# CUDA 安装:
## 进入tty1: ctrl+alt+F1
sudo service lightdm stop
sudo sh cuda*.sh
## !!!注意注意注意!!!
## 询问OpenGL安装时,选NO!,之后的那个default为no的也要选NO,其他就选YES就好

##成功后
reboot

# 如果没有出现问题则安装成功,下面需要添加环境变量等等:
##step1:
ls /dev/nvidia*
###出现下面两种情况:
Case1:
/dev/nvidia0      /dev/nvidiactl      /dev/nvidia-uvm
则成功

Case2:
ls: cannot access/dev/nvidia*: No such file or directory
或只出现:
/dev/nvidia0     /dev/nvidiactl
没有num那项
则:
sudo gedit /etc/rc.local
如果你是第一次打开这个文件,它应该是空的(除了一行又一行的#注释项外)。这文件的第一行是
#!/bin/sh -e-e去掉(这步很重要,否则它不会加载这文本的内容)
然后把下列内容除了#!/bin/bash外复制到其中,(before exit 0 )保存退出。
#------------------------start file--------------------------------
#!/bin/bash

#---copy start:

/sbin/modprobe nvidia

if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`

N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done

mknod -m 666 /dev/nvidiactl c 195 255

else
exit 1
fi

/sbin/modprobe nvidia-uvm

if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`

mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi


#-------------------end file-----------------------

## 保存并退出
## 重启
reboot

## 检查:
ls /dev/nvidia*
返回:
/dev/nvidia0       /dev/nvidiactl       /dev/nvidia-uvm
则成功

# 设置环境变量:
sudo gedit /etc/profile
在打开的文件末尾,添加以下两行。
64位系统:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\
                                                   ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

32位系统:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib\
                                                   ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

##保存文件,并重启
reboot

# 重启电脑,检查上述的环境变量是否设置成功。
## 验证驱动版本
cat /proc/driver/nvidia/version

输出:
NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.81 Sat Sep 2 02:43:11 PDT 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 

## 验证CUDA Toolkit
nvcc -V
>> 输出版本信息

Step4:编译 CUDA_SAMPLE

cd /home/xxx/NVIDIA_CUDA-9.0_Samples
make

##如果没GCC(反正我的没出现)
sudo apt-get install gcc

## 测试:
cd /home/lxxx/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release
./deviceQuery
./bandwidthTest

Tensorflow, Pytorch

pip3 install *

The END

给陈曦~~

你可能感兴趣的:(基础,cuda)