小白给GPU工作站安装Ubuntu 14.04系统时,老是碰到login
loop(循环登录)的情况,如果在网上搜解决循环登录的解决方案,没有一个是可用的。个人觉得离开实际情况谈问题都在扯淡,而造成GPU工作站循环登录的情况,个人猜测是核显(intel
cpu)和独显(nvidia gpu)造成的,如果直接安装gpu的驱动会导致系统无法进入。
这里最正确的方式还是Cuda安装说明页面给出的安装步骤。不推荐.deb包安装,这种方式一样出现login
loop的情况(优势在于直接安装了g++,可以用于Examples的编译).
正确的安装步骤:
1.
安装ubuntu14.04系统,登录后发现默认的桌面环境是Unity,虽然效果所谓很酷,但是个人感觉无爱,重新安装桌面环境,通过echo
$DESKTOP_SESSION查看桌面环境;
打开终端Terminal(Ctrl+Alt+T),输入sudo apt-get install
gnome-session-fallback;登出选择Metacity登录,这里不推荐Compiz,该环境右下方的workspaces(多工作区)会出现无法正常显示的情况
(可选)输入sudo apt-get install
compizconfig-settings-manager安装CompizConfig管理器
输入sudo apt-get install
indicator-applet-appmenu,方便在上方状态栏添加快捷方式,按住Win+Alt,右击添加
2.(可选)如果安装过nvidia driver,则需要完整卸载,命令顺序:
sudo apt-get remove --purge nvidia-* && sudo apt-get
autoremove
sudo apt-get install ubuntu-desktop
sudo rm /etc/X11/xorg.conf
echo 'nouveau' | sudo tee -a /etc/modules
3.安装cuda
Pre-installation actions:
lspci | grep -i nvidia 查看nvidia显卡
uname -m && cat /etc/*release 查看系统版本
gcc --version 查看gcc编译器
uname -r 查看内核版本
sudo apt-get install linux-headers-$(uname -r)
安装内核版本头文件和开发包
-------
关闭Nouveau驱动:
添加blacklist文件
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
添加内容
blacklist nouveau
options nouveau modeset=0
修改blacklist文件
sudo gedit /etc/modprobe.d/blacklist.conf
在末尾添加
blacklist nouveau
重新生成内核文件
sudo update-initramfs -u
修改Grub文件,以文本方式重启系统:
编辑grub文件 sudo gedit /etc/default/grub
注释 GRUB_HIDDEN_TIMEOUT=0
先进行备份 sudo cp -n /etc/default/grub
/etc/default/grub.orig
编辑grub文件 sudo gedit /etc/default/grub
变动内容
注释 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" (在前面加#)
修改 GRUB_CMDLINE_LINUX=""为GRUB_CMDLINE_LINUX="text"
取消注释 #GRUB_TERMINAL=console
保存后关闭,再调用 sudo update-grub
重启计算机
进入命令行模式,登录账户
切入cuda runfile下载文件夹
安装runfile文件 sudo sh cuda__linux.run
安装过程中默认安装路径,默认安装Examples,安装驱动,不要安装opengl,不要设置xorg.conf,
cuda官网有说明如果显示器接在其他显卡上,就不要进行这两项设置
安装完重启计算机
此时还在命令行模式,登录后输入 sudo mv /etc/default/grub.orig
/etc/default/grub && sudo update-grub
输入sudo reboot
重启计算机
进入正常图像界面
验证设备节点(一般命令是失效的),
新建文件
#!/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保存后运行
会发现在/dev文件下多了nvidia*
的文件
后续环境变量配置
在/etc文件夹下的profile末尾添加
export PATH=$PATH:/usr/local/cuda-8.0/bin
export
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64"
下载cudnn包,解压后将include和lib文件夹下的文件分别复制到cuda下的include 和lib64
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
下载g++
sudo apt-get install build-essential
下载libjpeg
sudo apt-get install libjpeg-dev
编译examples
查看驱动版本 cat /proc/driver/nvidia/version
查看 nvcc版本 nvcc -V
在examples目录下 输入 make,编译所有examples,完成后切换进入对应的二进制文件夹下
调用 ./deviceQuery 查看显卡
调用 ./bandwidthTest 查看带宽情况
在terminal中输入nvidia-smi查看显卡资源占用情况(x
server无法使用,估计是没有用N卡做显示器输出的连锁效应)