1 CUDA安装

CUDA软件的安装参照Nvidia网站的“NVIDIA CUDA Installation Guide for Linux”文档进行。

1.1 安装前的检查

1.1.1 确认具备支持cuda的NVIDIA 显卡

输入lspci | grep -i nvidia,确认计算机搭载Nvidia的独立显卡,并且该型号支持CUDA. https://developer.nvidia.com/cuda-gpus站点上列举了支持的GPU型号及其性能。

cuda怎么指定gpu cuda-gpus两个选项_cuda怎么指定gpu

如上图,本机安装的是GT 635M显卡,下图是该显卡支持的特性。

cuda怎么指定gpu cuda-gpus两个选项_ubuntu_02

 

1.1.2 查看操作系统版本

使用命令 uname -m && cat /etc/*release检查linux发行版本,本机安装的是64 bit-Ubuntu 16.04.2.

 

cuda怎么指定gpu cuda-gpus两个选项_cuda_03

1.1.3 检查gcc版本

输入命令gcc –version,系统自带的GCC编译器版本是5.4.0.

 

cuda怎么指定gpu cuda-gpus两个选项_GPU_04

1.2 从.run文件安装

本人使用runfile文件安装, 首先从https://developer.nvidia.com/cuda-downloads 下载 .run格式的安装文件,注意需要与操作系统版本相符。[CUDA_Quick_Start_Guide.pdf]

根据多次尝试和失败的教训,CUDA安装需要注意3点:1.停用Nouveau服务,否则不能安装NVIDIA驱动;2.不要安装opencl,否则无法登录用户;3.不更新x-start配置文件,否则具有双显卡的笔记本会黑屏,默认不从自带屏幕输出图像。

1.2.1 关闭Nouveau服务

Nouveau是Ubuntu自带的第三方开源N卡驱动,安装NVIDIA官方驱动之前需要禁用Nouveau.

安装指南中给出的方法如下:

1. 创建文件/etc/modprobe.d/blacklist-nouveau.conf并加入以下内容:

blacklist nouveau
options nouveau modeset=0
2.重建内核initramfs:
$ sudo update-initramfs -u
但该方法并不一定能成功禁用Nouveau,如果失败,可以尝试增加以下步骤:
1. remove all nvidia packages ,skip this if your system is fresh installed 
sudo apt-get remove nvidia* && sudo apt autoremove
2. install some packages for build kernel:
sudo apt-get install dkms build-essential linux-headers-generic
3. now block and disable nouveau kernel driver:
sudo vim /etc/modprobe.d/blacklist.conf
Insert follow lines to the blacklist.conf:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
save and exit.
4. Disable the Kernel nouveau by typing the following commands(nouveau-kms.conf may not exist,it is ok):
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
5. build the new kernel by:
sudo update-initramfs -u
6. reboot

确认下Nouveau已经被禁用,使用命令: lsmod | grep nouveau,如果没有任何相关的返回结果,则说明已经禁用成功。

 

1.2.2 安装CUDA

CUDA的安装程序中包含了NVIDIA驱动,因此无需提前安装驱动(单独安装显卡驱动也可以)。因为涉及到显卡驱动程序,安装时首先要关闭图形界面即x-windows服务。

输入sudo service lightdm stop,然后Ctrl+Alt+F1进入命令行终端,定位到安装文件所在目录,如果只有一个cuda开头的文件,可以用正则表达式表示,键入:

sudo sh cuda*.run

前文已经提到过,如果是intel+NVIDIA的笔记本,安装时注意不要安装OpenCL库,也不要更新x-start配置文件。

 

安装完成后如上图所示,启动图形界面程序,重启。

sudo service lightdm start

Reboot

cuda怎么指定gpu cuda-gpus两个选项_linux_05

上图中,安装完成后显示缺少libGLU、libx11等库,进入图形界面之后用apt安装即可:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

【】

 

1.2.3 添加环境变量

设置系统变量和编译时库的路径变量:

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

$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

注意在shell窗口中运行这两条命令,只在该窗口中生效。一劳永逸的方法是在/etc/profile中添加这两行。这样,重启后应该就可以使用cuda的编译器nvcc命令了。

1.3 Apt方式安装cuda,单独安装驱动

如果十分不幸(比如我)的话,从.run文件安装完cuda后,在终端中输入nvcc是提示找不到该程序的,问题可能出在环境变量上,添加之后只在当前终端中生效,关闭后又恢复原样了。并且NVIDIA的驱动也会出现莫名其妙的问题,nvidia-setting打开后说没有使用该驱动。这个时候可以试试apt方式安装cuda。

1.3.1 先装驱动

在安装cuda前,先装好显卡驱动为佳。下载驱动安装程序NVIDIA-Linux-x86_64-384.90.run.安装前同意需要先禁用nouveau,关闭图形界面(参见1.2.2),然后运行 sudo  NVIDIA* -no-x-check -no-nouveau-check -no-opengl-files 后面的参数是关闭x服务,禁用nouveau,不安装opengl. 安装完成后会询问是否要更新xorn,选no. 如果安装步骤出错了,可以用nvidia-uninstall卸载后重新安装。

驱动安装正确之后,用nvidia-setting就可以打开X server setting了。这里还有一个坑,就是要尽量关闭bios的保护,例如secure boot、memory protect等。

1.3.2 使用apt安装cuda-toolkit

 

很简单,sudo apt-get install nvidia-cuda-toolkit

但版本是7.5, 并且没有sample例程,如果需要的话要去别的地方找(https://developer.nvidia.com/cuda-code-samples这里可以下载到)。好处是可以一键安装所需的依赖包,并配置好变量,直接就能运行。

1.4 运行例程

如果在安装时已经选择了安装samples,输入以下命令可以运行一个nbody的例程,用于检验安装是否正确。

$cuda-install-samples-8.0.sh ~
$cd ~/NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody
$make
$./nbody

1.5 小结

CUDA自带了NVIDIA的驱动,如果不能用,使用nvidia-uninstall命令卸载之后,单独安装驱动。驱动安装时要先禁用Nouveau,笔记本双显卡不能安装Opengl,不要更新xorg.conf配置,不需要安装Bumblebee软件,否则独立显卡不能启动。这短短几十个字是笔者花费30个小时尝试安装配置的总结。

/*-------------------
2. Reboot into runlevel 3 by temporarily adding the number "3" and the word
"nomodeset" to the end of the system's kernel boot parameters.
3. Run the installer silently to install with the default selections (implies acceptance of
the EULA):
sudo sh cuda_<version>_linux.run --silent
4. Create an xorg.conf file to use the NVIDIA GPU for display:
$ sudo nvidia-xconfig
5. Reboot the system to load the graphical interface.
6. Set up the development environment by modifying the PATH and
LD_LIBRARY_PATH variables:
$ export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
7. Install a writable copy of the samples then build and run the nbody sample:
$cuda-install-samples-8.0.sh ~
$cd ~/NVIDIA_CUDA-8.0_Samples/5_Simulations/nbody
$make
$./nbody
-----------------------------*/
 
 
 
同样要关闭x-windows服务,在命令行下安装
sudo service lightdm stop
sudo ./cuda_8.0.61_375.26_linux.run
安装时选择不装opencl.
最新版本的cuda中包含了NVIDIA 的驱动,所以只装这一个就行了。

 

2 开发环境

codeblocks+nvcc

3 环境配置

 

codeblock配置nvcc编译器,参见: