CUDA安装踩坑指南-Effective DeepLearning

写在最前面, 因为我们用的tensorflow这个谷歌的AI框架,而且用的是官网的按照保,所以下面的都是按照tensorflow官网的要求和规则来做。其他自己框架或者自己编译的安装的小伙伴们不一定适用。
第一步其实并不是安装安装 NVIDIA cuda, 而是先要选择好操作系统,这个很重要因为现在tensorflow官网只对ubuntu, maxOS, windows的错误进行维护,其他系统的错误就要靠自己囖。

说操作系统重要还有一点就是cuda会依赖不同的操作系统的自带驱动包,然后要根据你的显卡核心版本去下载不同版本的cuda的安装包,不同的tensorflow版本又只能支持对应版本的cuda驱动,如果错了一点可能又要删除重新弄,建议如果是新机器还是用最新的稳定版的系统为好。下面的步骤是针对ubuntu16.0.4和centOS 7的,而且亲测有效(花了两三天时间才装好的)

==========================================真正的开始===========================================

安装 NVIDIA cuda


文档:

总目录:https://developer.nvidia.com/cuda-toolkit-archive


最新版本:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#runfile-nouveau


自选版本:https://docs.nvidia.com/cuda/archive/9.0/cuda-installation-guide-linux/index.html



1. 选择 runfile下载 cuda_9.0.176_384.81_linux-run, 在发帖之前tensorflow到了1.9版本,但是官方的安装包都只支持cuda9.0,更高版本的cuda需要自行修改源码去支持了,所以这里选择了9.0的包。在下载之前官网文档上还有一个Pre-installation Actions 的步骤,这个步骤里面的每一小步也是很重要的所以大家一定要看清楚,这些步骤会叫你怎么选择cuda版本,怎么查看系统是否支持等信息,所以每一步都要看喔~!

2. 下载完成之后 运行 "sudo sh cuda_9.0.176_384.81_linux-run" ,然后看到一大堆文档不断的空格键



3. Do you accept the previously read EULA?
   

    accept/decline/quit: accept(没什么好说的了直接敲accept)

4. Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 396.26?
   

    (y)es/(n)o/(q)uit: n (这里是说安装显卡驱动,但是不建议用cuda自带的显卡驱动包,因为这很大可能跟你的显卡的版本对不上,一旦对不不上后面的安装可能出错,即使不出错在时间使用的时候也会报莫名其妙的错误,所以还是自己到这里https://www.geforce.com/drivers 去下载显卡驱动安装。可以先装显卡驱动也可以装完cuda再装。)

5. Do you want to install the OpenGL libraries?  
  

     (y)es/(n)o/(q)uit [ default is yes ]: n (这是nvidia自己的opencv 没有用的,要用就用直接的opencv官网安装也很简单,所以这n)

   

6. Do you want to run nvidia-xconfig?
   

    This will update the system X configuration file so that the NVIDIA X driver
    is used. The pre-existing X configuration file will be backed up.
    This option should not be used on systems that require a custom
    X configuration, such as systems with multiple GPU vendors.
    (y)es/(n)o/(q)uit [ default is no ]: n (没什么用处所以n)

   

7. Install the CUDA 9.2 Toolkit?
 

    (y)es/(n)o/(q)uit: y (猪脚在这里只能是y了)

   

8. Enter Toolkit Location
   

     [ default is /usr/local/cuda-9.2 ]: (直接回车)

之后就是一堆很丑陋的命令行模拟界面的提示信息,一直Ok就可以

最后成功安装

===========
= Summary =
===========



Driver:   Disable


Toolkit:  Installed in /usr/local/cuda-9.0


Samples Installed in /home/luzhanbo/data/source/cuda_samples

Please make sure that


-   PATH includes /usr/local/cuda-9.0/bin


-   LD_LIBRARY_PATH includes /usr/local/cuda-9.0/lib64, or, add /usr/local/cuda-9.0/lib64 to /etc/ld.so.conf and run ldconfig as root

========================================完美分割线=============================================


你以为这样子就好了么,骚年你还是太年轻了,安装后才是踩坑的时候。下面是遇到过的坑希望能帮到大家
~~!

1. 运行tensorflow发现还是会提示缺很多的包,因为cuda的包并没有加入到环境变量里面,所以找不到按下面的把cuda的安装路径下面的lib64和bin都放到环境路径就可以

vim /etc/proflie

#set nvidia cuda env


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


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


2. 没有 /dev/nvidia* 这个文件, 把这里的https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#runfile-verifications script写在一个运行文件里面运行一次就可以

3. tensorflow每一个build的版本都只能对应某些CUDA的版本,因为tensor在调用的时候会根据版本号去调用api,本人就试过安卓9.2版本的CUDA+tensorflow1.6,结果调用出错因为1.6版本的tensorflow依赖的是一个包libcublas.so.9.0,而9.2版本的CUDA装的是9.2的libcublas.so 这就尴尬了。

4. 运行tensorflow,报错找不到libcudnn的包 去nvidia下载 https://developer.nvidia.com/rdp/cudnn-archive(估计是nvidia特意留坑要你去注册)找到 cudnn-9.0-linux-x64-v7.tgz 这个对应cuda9.0的cudnn包,解压后有一个cuda目录然后 sudo cp lib* /usr/local/cuda/lib64/,  然后 sudo cp cudnn.h /usr/local/cuda/include/ 分别拷贝到cuda对应的文件夹就可以,如果是用安装包的那就 cd cudnn-6.5-linux-R1 或者 locate cudnn 找到对应的lib目录在cp就可以。 

5. cp /lib/udev/rules.d/40-vm-hotadd.rules /etc/udev/rules.d


6.显卡驱动和显卡版本不兼容的问题,上面安装的步骤里面已经提过,一旦不兼容用的时候回报很多莫名其妙的错  

2018-06-01 17:09:23.275631: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: 384.81.0

2018-06-01 17:09:23.275660: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: 384.130.0
    

2018-06-01 17:09:23.275668: E tensorflow/stream_executor/cuda/cuda_diagnostics.cc:303] kernel version 384.130.0 does not match DSO version 384.81.0 -- cannot find working devices in this configuration 错误


kernel 是内核版本, libcuda 是cuda版本 下载驱动,不要用apt-get自动更新显卡驱动!不要用apt-get自动更新显卡驱动!不要用apt-get自动更新显卡驱动! https://www.geforce.com/drivers 自己下对于的驱动吧~!

7. centOS执行以下命令,查找编译gcc时生成的最新动态库:

find / -name "libstdc++.so*"


LD_PRELOAD=/usr/local/glibc-2.14/lib/libc-2.14.so ln -s /lib64/lib64/libc-2.17.so /lib64/libc.so.6

你可能感兴趣的:(tensorflow)