cuda toolkit 与cudnn

前面我们已经成功安装了Nvidia驱动程序,接着进行cuda和cudnn的安装和配置

NVIDIA的显卡驱动器与CUDA并不是一一对应的,CUDA本质上只是一个工具包而已,所以可以在同一个设备上安装很多个不同版本的CUDA工具包,比如我的电脑上同时安装了 CUDA 9.0、CUDA 9.2、CUDA 10.0三个版本。一般情况下,只需要安装最新版本的显卡驱动,然后根据自己的选择选择不同CUDA工具包就可以了,但是由于使用离线的CUDA总是会捆绑CUDA和驱动程序,所以在使用多个CUDA的时候就不要选择离线安装的CUDA了,否则每次都会安装不同的显卡驱动,这不太好,我们直接安装一个最新版的显卡驱动,然后在线安装不同版本的CUDA即可。

所以 CUDA和显卡驱动是没有一一对应的

cuDNN是一个SDK,是一个专门用于神经网络的加速包,注意,它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。

所以 cuDNN与CUDA没有一一对应的关系

 

cuda与cudnn下官网下载地址:

https://developer.nvidia.com/cuda-toolkit-archive

装完CUDA还需要装python吗_显卡驱动

https://developer.nvidia.com/rdp/cudnn-archive

装完CUDA还需要装python吗_linux_02

下载需要的版本即可(需要登录再下载)

 

安装cuda相关依赖包:

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

安装cuda

首先官网下载所需的cuda 版本

法一:

关闭图形化界面

sudo service lightdm stop

或是

sudo telinit 3

再按Ctrl+Alt+F1进入tty界面

安装

进入cuda下载文件夹

cd /home/Downloads

下载完成之后,给文件赋予执行权限:

chmod +x cuda_10.0.130_410.48_linux.run
执行安装包,开始安装:
./cuda_10.0.130_410.48_linux.run

开始安装之后,需要阅读说明,可以使用Ctrl + C直接阅读完成,或者使用空格键慢慢阅读。

(是否同意条款,必须同意才能继续安装)
accept/decline/quit: accept

(这里不要安装驱动,因为已经安装最新的驱动了,否则可能会安装旧版本的显卡驱动,导致重复登录的情况)
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n

Install the CUDA 10.0 Toolkit?(是否安装CUDA 10 ,这里必须要安装)
(y)es/(n)o/(q)uit: y

Enter Toolkit Location(安装路径,使用默认,直接回车就行)
 [ default is /usr/local/cuda-10.0 ]:  

Do you want to install a symbolic link at /usr/local/cuda?(同意创建软链接)
(y)es/(n)o/(q)uit: y

Install the CUDA 10.0 Samples?(不用安装测试,本身就有了)
(y)es/(n)o/(q)uit: n

Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...(开始安装)

Driver :Installed
Toolkit :Installed in /usr/local/cuda-10.0
Samples :Installed in /home/lihailin

重新启动图形化界面 sudo service lightdm start, Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明cuda的安装成功了。

法二:

直接安装,命令行运行

sudo sh cuda_XXXX_linux.run

选择与上方一致。

 

搭配环境(软连接)

方法一:

终端输入

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

方法二:

vim ~/.bashrc的最后加上以下配置信息:

export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
source ~/.bashrc

可以使用命令nvcc -V查看安装的版本信息:

test@test:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

验证cuda是否安装成功

执行以下几条命令:

cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
make
./deviceQuery
正常情况下输出:
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce RTX 2070"
  CUDA Driver Version / Runtime Version          10.0 / 10.0
  CUDA Capability Major/Minor version number:    7.5
  Total amount of global memory:                 7950 MBytes (8335982592 bytes)
  (36) Multiprocessors, ( 64) CUDA Cores/MP:     2304 CUDA Cores
  GPU Max Clock rate:                            1620 MHz (1.62 GHz)
  Memory Clock rate:                             7001 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 4194304 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:  1024
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 3 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 supports Compute Preemption:            Yes
  Supports Cooperative Kernel Launch:            Yes
  Supports MultiDevice Co-op Kernel Launch:      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.0, CUDA Runtime Version = 10.0, NumDevs = 1
Result = PASS

cndnn的配置

进入官网https://developer.nvidia.com/rdp/cudnn-archive选择相应的版本,

装完CUDA还需要装python吗_linux_03

这里选择cuDNN Library for Linux

下载之后是一个压缩包,如下:

cudnn-10.0-linux-x64-v7.6.3.30.tgz

然后对它进行解压,执行命令:

tar -zxvf cudnn-10.0-linux-x64-v7.6.3.30.tgz
解压后得到:

装完CUDA还需要装python吗_linux_04

使用以下两条命令复制这些文件到CUDA目录下:

cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
cp cuda/include/* /usr/local/cuda-10.0/include/

拷贝完成之后,可以使用以下命令查看CUDNN的版本信息:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

装完CUDA还需要装python吗_CUDA_05

如图cudnn版本为7.6.3。

至此完成安装,后面可安装对应的Pytorch或者tensorflow的GPU版本测试是否可以正常使用。

 

查看cuda版本指令

nvcc -V
nvcc -version
#cuda 版本
cat /usr/local/cuda/version.txt
# cd usr/local
stat cuda

查看cudnn版本:

# cudnn 版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

下一篇将介绍多版本cuda共存的配置安装