CUDA安裝踩坑指南

寫在最前面, 因爲我們用的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章