在Ubuntu14.04下挣扎着安装CUDA
过节放假啦,小伙伴们纷纷发起了狗粮,今天再玩一下我也要回家~
依然用着多年前的小霸王笔记本。
显卡是凄凉的GT630M,准备强行上一波CUDA,Tensorflow走起。
经历了一次彻底崩溃之后,再次安装终于成功。
附加一份CUDA7.5的官方文档,非常的科学
http://developer.download.nvidia.com/compute/cuda/7.5/Prod/docs/sidebar/CUDA_Installation_Guide_Linux.pdf
首先安装ubuntu14.04
清理出一个空白的磁盘分区,推荐30G。(仿佛下一步wubi安装时仿佛最多支持30G?)
使用了方便快捷的wubi安装器(下载的镜像自带),在win8下可以直接安装。
打开wubi,设置盘符、安装大小、用户名、密码,安装即可,几十秒钟就能初始化完成,重启计算机。
重启时一定记得在windows的logo之后选择系统,选择ubuntu。
然后提示回环设备什么的,选择继续,开始自动安装。
之后会再次重启系统,如果直接进入ubuntu系统,可能(几乎一定会)出现“为/检查磁盘时出现严重错误”
因此在ubuntu启动选择时
光标选中 *Ubuntu 后,按键盘上的 e 键
然后使用光标定位到如图所示位置,将 ro 改成 rw 后,按 F10 键,即可按照修改后的参数引导进入系统。
进入系统后ctrl+alt+T打开终端,运行
sudo gedit /etc/grub.d/10_lupin
做同样的修改
同样位置(应该是在第150行)的 ro 修改为 rw ,然后保存并退出文本编辑器,然后执行
sudo update-grub
以后就不会出现错误了
我用的ubuntu14.04有两个小问题,顺便附以下解决方案:
文字选中就会删除
命令行输入
ibus-setup
取消选中“在应用窗口中启用内嵌编辑模式”
成功解决
输入法默认双拼
点击右上角的输入法首选项
去掉简拼选项
命令行输入
ibus-daemon -drx
成功解决
正式进入CUDA:
首先,apt-get的方法有毒,反正实测安装未遂,而且卸载也没用,无法进入桌面,只能重装了系统。
下面介绍稳健的runfile安装:
确定自己的GPU支持CUDA、系统架构、内核版本什么的就不用多说了。
下载最新的CUDA安装包(仿佛官方不提供旧版的),地址:
https://developer.nvidia.com/cuda-downloads
选择系统(Linux)、架构(x86_64)、发行类型(ubuntu)、版本(14.04)、安装方式(runfile(local)),点击下载。
据说下载后一定要放在中文路径下。
禁用nouveau
打开终端,输入
lsmod | grep nouveau
如果有输出,即需要禁用nouveau
简单粗暴的直接改名字吧
cd /lib/modules/
ls
此时应该只显示一个文件夹,替换下面的红色名称即可
执行CUDA安装
重启电脑,到达登录界面时,ctrl+alt+f1,进入text mode,登录账户,执行
lsmod | grep nouveau
如果无输出,证明第一步成功,继续下一步。(如果还有输出的话就请继续百度自求多福吧)
关闭图形界面服务
sudo service lightdm stop
切换到下载的安装文件目录,运行安装
cd ~
sudo sh cuda_8.0.61_375.26_linux.run
开头是蛋疼的用户协议,居然需要一路回车到底(应该有更科学的方式才对啊),然后accept。
下面的选项大多数选择默认,除了
遇到提示是否安装openGL ,选择no(如果你的电脑跟我一样是双显,且主显是非NVIDIA的GPU需要选择no,否则可以yes)
然后等待安装成功...
安装成功后,会显示installed,否则会显示failed。
设置Device Node Verification
输入 sudo service lightdm start 重新启动图形化界面。
输入密码登录,如果能登录,基本说明安装成功。
检查路径/dev下 有无存在名为nvidia*(以nvidia开头)的多个文件(device files)
如果(基本上都)没有,运行以下脚本生成
设置环境变量
终端中输入
sudo gedit /etc/profile
在打开的文件末尾,添加以下两行:(记得改成自己安装的CUDA版本)
检查安装结果
重启电脑
首先安装一下最新的g++
sudo apt-get update
sudo apt-get install g++
进入官方例子存放的路径
cd ~/NVIDIA_CUDA-8.0_Samples
make
等待编译成功
cd ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release/
体验一下CUDA吧~
./deviceQuery
./bandwidthTest
瞬间感觉人生圆满了...
sudo mv /lib/modules/3.19.0-25-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko /lib/modules/3.19.0-25-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko.org sudo update-initramfs -u
#!/bin/bash /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
保存为nvidia.sh
sudo sh nvidia.sh
export CUDA_HOME=/usr/local/cuda8.0 export PATH=/usr/local/cuda-8.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64