简介
本文记录本人安装CUDA的方法及过程中,以及出现的一些问题及解决办法。本人习惯于参考官方手册,这里主要参考 NVIDIA CUDA 官方手册 进行安装,其中包含了CUDA开发的几乎所有文档手册,如何在 Linux 系统上的安装CUDA参见: CUDA Linux Inatallation。
通过阅读上述手册可知,Linux系统上CUDA的安装方式有两种:包管理器方式(.deb
文件) 和 RUN file安装( .run
文件)。本文选择 run
格式安装,关于 deb
的安装请参考上述官方手册,或者本人另一篇博客 NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0),不过有点老了。
参考手册:
软件环境:Ubuntu 16.04LTS
硬件环境:1080TI
您还可以参照企鹅饿饿饿的 Ububtu16.04+GTX1070深度学习小钢炮 这篇文章 ~,~
安装
安装前请先参考 注意事项 部分………………………………..
下载
先给出下载链接:
从 这里 选择操作系统并下载 run 格式的 CUDA开发套件,以及显卡驱动文件(一个文件,如:cuda_8.0.61_375.26_linux.run
),如下图所示:
从 这里下载CUDNN,如 cudnn-8.0-linux-x64-v6.0.tgz
,并解压得到 cudnn-8.0-linux-x64-v6.0
文件夹,里面仅包含一个 cuda
文件夹。
准备
参考这里 确认你的PC机上装有NVIDIA CUDA可计算显卡、支持的Linux版本系统、GCC等等。如果已确认,可飞过。
安装CUDA
禁用 Nouveau 驱动
执行 lsmod | grep nouveau
命令,无论输出什么,都说明nouveau驱动已加载,Ubuntu系统中,通过如下步骤禁用nouveau驱动。
blacklist nouveau options nouveau modeset=0
- 重新生成kernel initrd
终端执行:sudo update-initramfs -u
提示成功后,往下看…
进入文本模式
进入文本模式:快捷键 Ctrl + Alt + F1 ,输入用户名密码登录系统。再次确保 nouveau 驱动没有被加载 (命令:
lsmod | grep nouveau
什么也不输出代表已禁用)。关闭X server服务:
sudo service lightdm stop
执行安装
终端进入你下载的 run格式CUDA开发套件所在文件夹,执行该文件进行安装,命令示例如下,注意你的版本:
sudo sh cuda_<version>_linux.run
如:
sudo sh cuda_8.0.61_375.26_linux.run
在弹出的文本模式交互页面,按 Q
键退出文档查看,并根据提示输入 accept
接受协议。
之后根据自己需要,按提示设置,如安装路径等等。一般默认即可,但 注意: 安装过程中,不要选择OpenGL,否则会出现,循环进入登录界面 ,本人选择安装 CUDA Samples(建议安装,待会会借助它查看是否安装成功,及显卡信息),并安装在 Documents 文件夹下。
等待安装完成即可…
添加环境变量
注意:此环境变量为64位系统下的,32位的把lib64改成lib即可。
# setting the environment variables so CUDA will be found
echo "\nexport PATH=/usr/local/cuda-7.0/bin:$PATH" >> ~/.bashrc
echo "\nexport LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
先使用sudo gedit /etc/profile打开“profile”文件,或者 sudo gedit ~/.bashrc
打开“./bashrc”文件,然后在打开的文件的末尾添加如下代码并保存:
# setting the environment variables so CUDA will be found
# After open profile,Add follow code at the end of file
export PATH=/usr/local/cuda-7.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH
加载新的环境变量
添加好环境变量后,需要加载新的环境变量,才能应用于系统。
加载更新环境变量 source ~/.bashrc
(方式1),source /etc/profile
或 source ~/.bashrc
(方式2)。或者重新打开终端,或者干脆重启系统 ~.~
注:如果你没有重启系统,还需要重启 X server 服务:sudo service lightdm start
进入图形界面。
现在,你可以关机,并取下亮机卡 了 ~.~
查看CUDA设备
终端进入你的 CUDA Samples安装目录,执行编译后运行 ./deviceQuery
输出显卡设备等信息。
cd NVIDIA_CUDA-7.0_Samples/1_Utilities/deviceQuery
make
./deviceQuery
输出的信息 , 成功看到类似信息代表驱动及开发套件安装成功,下面安装CUDNN:
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 2 CUDA Capable device(s)
Device 0: "GeForce GTX 1080 Ti"
CUDA Driver Version / Runtime Version 8.0 / 8.0
CUDA Capability Major/Minor version number: 6.1
Total amount of global memory: 11172 MBytes (11715084288 bytes)
(28) Multiprocessors,(128) CUDA Cores/MP: 3584 CUDA Cores
GPU Max Clock rate: 1582 MHz (1.58 GHz)
Memory Clock rate: 5505 Mhz
Memory Bus Width: 352-bit
L2 Cache Size: 2883584 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(131072),2D=(131072,65536),3D=(16384,16384,16384)
Maximum Layered 1D Texture Size,(num) layers 1D=(32768),2048 layers
Maximum Layered 2D Texture Size,(num) layers 2D=(32768,32768),2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,z): (1024,1024,64)
Max dimension size of a grid size (x,z): (2147483647,65535,65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 2 copy engine(s)
Run time limit on kernels: No
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 3 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
Device 1: "GeForce GTX 1080"
CUDA Driver Version / Runtime Version 8.0 / 8.0
CUDA Capability Major/Minor version number: 6.1
Total amount of global memory: 8111 MBytes (8504868864 bytes)
(20) Multiprocessors,(128) CUDA Cores/MP: 2560 CUDA Cores
GPU Max Clock rate: 1734 MHz (1.73 GHz)
Memory Clock rate: 5005 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 2097152 bytes
Maximum Texture Dimension Size (x,65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 2 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
> Peer access from GeForce GTX 1080 Ti (GPU0) -> GeForce GTX 1080 (GPU1) : No
> Peer access from GeForce GTX 1080 (GPU1) -> GeForce GTX 1080 Ti (GPU0) : No
deviceQuery,CUDA Driver = CUDART,CUDA Driver Version = 8.0,CUDA Runtime Version = 8.0,NumDevs = 2,Device0 = GeForce GTX 1080 Ti,Device1 = GeForce GTX 1080
安装CUDNN
CUDNN是NVIDIA公司针对深度神经网络,开发的基于CUDA的计算库,用于加速计算,这里安装版本为6.0,目前最新为7.0,但安装方式不变,且十分简单。
1.解压:进入“cudnn-8.0-linux-x64-v6.0.tgz”所在目录,将文件解压,如下:
#注意修改成你的目录
cd /home/liu/sfw
#解压
gzip -d cudnn-7.0-linux-x64-v3.0-rc.tgz
tar xf cudnn-7.0-linux-x64-v3.0-rc.tar
2.copy文件至CUDA安装目录:解压后,在你的目录下生成一个“cuda”文件夹,对于cuDNN6.0的版本解压后生成“cudnn-8.0-linux-x64-v6.0”文件。使用如下命令copy,注意第二个有个-a参数,否则,拷贝过去的文件失去了链接。
# copy the library files into CUDA's include and lib folders
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64
cuDNN安装完成。~-~
注意事项
准备另外一块显卡(亮机卡)
有好些主板上没有集显,而Ubuntu自带的 nouveau
驱动不支持1080/1080Ti等新架构的显卡,所以需要准备一块老点的显卡,如: NVIDIA K2200
等。先把该显卡插到主板上,然后按上述教程安装CUDA驱动和 CUDNN,安装好后,可以拔下该显卡,换上你的高端显卡即可。
循环进登录界面
有些童鞋安装好CUDA重启后会发现:电脑不断地在登录界面循环,这是由于安装时选择安装了 OpenGL
,参考这里,安装时按照上述步骤, 不选择安装OpenGL即可。以前使用压缩命令压缩备份系统后再恢复,也会出现该现象,后来重装了系统。