Nvidia,CUDA,CuDNN安装记录

本文是个人的经验,只提供一些思路。每一台电脑都值得尊重与耐心。

引言

CPU 与 GPU 区别

从上图可以看出GPU(图像处理器,Graphics Processing Unit)和CPU(中央处理器,Central Processing Unit)在设计上的主要差异在于GPU有更多的运算单元(如图中绿色的ALU),而Control和Cache单元不如CPU多,这是因为GPU在进行并行计算的时候每个运算单元都是执行相同的程序,而不需要太多的控制。Cache单元是用来做数据缓存的,CPU可以通过Cache来减少存取主内存的次数,也就是减少内存延迟(memory latency)。GPU中Cache很小或者没有,因为GPU可以通过并行计算的方式来减少内存延迟。因此CPU的Cahce设计主要是实现低延迟,Control主要是通用性,复杂的逻辑控制单元可以保证CPU高效分发任务和指令。所以CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。打个比方,GPU就像成千上万的苦力,每个人干的都是类似的苦力活,相互之间没有依赖,都是独立的,简单的人多力量大;CPU就像包工头,虽然也能干苦力的活,但是人少,所以一般负责任务分配,人员调度等工作。可以看出GPU加速是通过大量线程并行实现的,因此对于不能高度并行化的工作而言,GPU就没什么效果了。而CPU则是串行操作,需要很强的通用性,主要起到统管和分配任务的作用。参考链接

Nvidia

显卡驱动。安装CUDA/CuDNN 必选项,每个电脑的显卡不同,在安装的时候要注意查看。

CUDA

CUDA(Compute Unified Device Architecture),是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务。

使用CUDA的好处就是透明。根据摩尔定律GPU的晶体管数量不断增多,硬件结构必然是不断的在发展变化,没有必要每次都为不同的硬件结构重新编码,而CUDA就是提供了一种可扩展的编程模型,使得已经写好的CUDA代码可以在任意数量核心的GPU上运行。如下图所示,只有运行时,系统才知道物理处理器的数量。

 CuDNN

NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如加州大学伯克利分校的流行CAFFE软件。简单的,插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。参考链接

CuDNN支持的算法

  • 卷积操作、相关操作的前向和后向过程
  • pooling的前向后向过程
  • softmax的前向后向过程
  • 激活函数的前向后向过程(ReLU/sigmoid/TANH等)
  • Tensor转换函数,其中一个Tensor就是一个四维的向量

安装流程

在Ubuntu环境下,安装nvidia显卡驱动,CUDA有两种思路:package manager安装和runfile安装,即同时安装驱动和CUDA    分开安装驱动和CUDA。提示:package manager 安装流程简单,耗时长,但失败率较高,与电脑环境和网络状态紧密相关; runfile 安装流程复杂,网上的教程较多。个人两种方式都安装过,个人倾向于package manager 方式安装。参考链接    参考链接

CUDA安装:package manager 方式( .deb 文件)

# package manager 安装
# 下载 .deb 文件
sudo dpkg -i cuda-repo-ubuntu1604-7-5-local_7.5-18_amd64.deb

sudo apt-get update

sudo apt-get install cuda      # 此过程相当漫长,个人此步骤安装花费4小时

# 中途断网 sudo apt-get install cuda  --fix-missing

环境变量

sudo gedit ~/.bashrc

# 添加路径
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

# 激活环境变量
source ~/.bashrc

CuDNN安装:先下载安装包 .tgz 文件格式(如果是其他文件格式,可以手动改为 .tgz 文件),再命令行安装。实际操作过程中,建议进入相关文件夹查看相关文件,以加深印象。


tar -xvf cudnn-9.0-linux-x64-v7.tgz

 

cd cuda  

sudo cp include/cudnn.h /usr/local/cuda/include/   

sudo cp lib64/*  /usr/local/cuda/lib64/

sudo chmod a+r /usr/local/cuda/include/cudnn.h

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

 

# 注意根据不同版本修改文件名 

cd /usr/local/cuda/lib64/

sudo rm -rf libcudnn.so libcudnn.so.7

sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7

sudo ln -s libcudnn.so.7 libcudnn.so 

sudo ldconfig 

验证安装是否成功

验证 Nvidia 显卡 参考链接

# 方法一
nvidia-smi

# 方法二
nvidia-settings

# 方法三
cat /proc/driver/nvidia/version

验证CUDA:参考链接

方法一:

nvcc -V

方法二:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery

出现一下便安装成功

./deviceQuery Starting...

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

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 740M"
  CUDA Driver Version / Runtime Version          8.0 / 8.0
  CUDA Capability Major/Minor version number:    3.5
  Total amount of global memory:                 2004 MBytes (2100953088 bytes)
  ( 2) Multiprocessors, (192) CUDA Cores/MP:     384 CUDA Cores
  GPU Max Clock rate:                            1032 MHz (1.03 GHz)
  Memory Clock rate:                             800 Mhz
  Memory Bus Width:                              64-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers

验证CuDNN:参考链接   参考链接

方法一

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

方法二

下载三个文件:下载链接

cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb)

cuDNN v7.0.5 Develpoper Library for Ubuntu16.04 (Deb)

cuDNN v7.0.5 Code Samples and User Guide for Ubuntu16.04 (Deb)


sudo dpkg -i libcudnn7_7.4.2.24-1+cuda9.0_amd64.deb

sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda9.0_amd64.deb

sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda9.0_amd64.deb

cp -r /usr/src/cudnn_samples_v7/ /home/wdong/

cd /home/wdong/cudnn_samples_v7/mnistCUDNN

make clean && make

./mnistCUDNN


# 显示 Test passed!

补充:

有时候确定自己安装正确了,但测试时却报错,请注意留心:环境变量激活,Ubuntu重启,终端重启。这些操作之后可能就正确了。

猜你喜欢

转载自blog.csdn.net/JACK_YOUNG007/article/details/89202185