1. 程式人生 > 實用技巧 >ubuntu16.04安裝cuda8.0 和cudnn5.1(多個cuda、天坑tensorflow)

ubuntu16.04安裝cuda8.0 和cudnn5.1(多個cuda、天坑tensorflow)

ubuntu16.04安裝cuda8.0 和cudnn5.1(多個cuda、天坑tensorflow)

背景

以下只能解決特定問題,普遍問題不能解決,建議參考參考部落格內容進行選擇。

文字摘要界中有一個很著名的論文,叫做Get to the point(指標生成模型),最近需要復現一下相關論文。然後踩坑就開始了。


過程

程式碼地址,有興趣的可以挑戰一下。其實這玩意說難也難,說不難也不難。難就難在配置環境上,真的是踩坑無數。我按照一步一步配置下來,獲得資料集步驟可以參考這篇部落格,會講解處理資料集的過程,但是具體還得看人家寫的英文文件。

處理好了之後,覺得還有點小成就,然後就安裝tensorflow跑,直接報錯:大概說的是型別轉換出現了問題。

不出意外,死活不會改人家的程式碼。只好換方法,找到上述的程式碼地址,看到作者tensorflow用的是1.2.1的,我尋思我也安裝跟作者一樣的,結果就可以正常跑通,然後就想著先跑著吧。跑了一上午、一下午、一晚上、又一上午,感覺訓練的速度好慢,就想著要不用gpu跑跑試試?然後手賤的在正在使用的環境中輸入了pip install tensorflow-gpu==1.2.1,然後就沒有然後了。

安裝cuda8.0

既然程式崩了,那就好好整理下,那就非得用GPU跑它不行。

首先找到一個表格

在這裡插入圖片描述

從這裡我們可以看出我們使用1.2.1那麼需要安裝的是cuda8和cudnn5.1。

我使用的是ubuntu16.04,然後輸入/usr/local

檢視由多少個cuda:
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/202012102011473.png)

可以看到有cuda9.0、cuda9.1,這就證明我們需要在一臺機器上安裝多個cuda。

步驟:

  1. 下載cuda8.0,百度網盤在這:連結:https://pan.baidu.com/s/1aXhnaIuM5cgyQ1sneYmbFQ
    提取碼:a5kk 。

  2. 將這個檔案拷貝到演算法伺服器的指定位置,並使用指令解壓:tar xvzf cuda_8.0....

  3. 解壓之後直接開始安裝:sudo sh cuda_8.0.61_375.26_linux.run。

  4. #..一堆協議說明...
    #直接按q退出協議說明.
    zerozone@zerozone: accept/decline/quit: accept  #接受協議
    
    Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26? 
    y)es/(n)o/(q)uit: n  #是否顯示卡驅動包,由於已經安裝顯示卡驅動,選擇n
    
    Install the CUDA 8.0 Toolkit?
    (y)es/(n)o/(q)uit: y #是否安裝工具包,選擇y
    
    Enter Toolkit Location
    [ default is /usr/local/cuda-8.0 ]: #工具包安裝地址,預設回車即可
    
    Do you want to install a symbolic link at /usr/local/cuda?
    (y)es/(n)o/(q)uit: y #新增連結**注意這個連線,如果你之前安裝過另一個版本的cuda,除非你確定想要用這個新版本的cuda,否則這裡就建議選no,因為指定該連結後會將cuda指向這個新的版本**
    
    Install the CUDA 8.0 Samples?
    (y)es/(n)o/(q)uit: y #安裝樣例
    
    Enter CUDA Samples Location
     [ default is /root ]:  #樣例安裝地址預設即可
    
    # ***安裝資訊***
    Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...
    
    Missing recommended library: libXi.so
    Missing recommended library: libXmu.so
    #注意,這裡出現了Missing recommended library錯誤,
    # 如果出現了錯誤:執行這條指令 
    # sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 
    # 我沒有出現,所以直接略過這條指令了,我執行這條指令,需要我安裝matlib,有點迷。所以就沒執行這段指令,後來發現也能用。
    #是因為博主在第一次安裝時,沒有新增最開始的那條安裝相關依賴的指令,
    #之後我添加了依賴後,再次安裝,就沒有Missing錯誤了
    
    Installing the CUDA Samples in /root ...
    Copying samples to /root/NVIDIA_CUDA-8.0_Samples now...
    Finished copying samples.
    
    ===========
    = Summary =
    ===========
    Driver:   Not Selected
    Toolkit:  Installed in /usr/local/cuda-8.0
    Samples:  Installed in /root, but missing recommended libraries
    
    Please make sure that
     -   PATH includes /usr/local/cuda-8.0/bin
     -   LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root
    
    To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
    
    Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.
    
    ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
    
    To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    
        sudo <CudaInstaller>.run -silent -driver
    
    Logfile is /tmp/cuda_install_6388.log   
    # ***安裝完成***
    
  5. 配置CUDA相關環境

    # 或者輸入這些指令:
    Tensorflow官方安裝歷程要求注意的是:配置PATH和LD_LIBRARY_PATH和CUDA_HOME環境變數.
    
    vim ~/.bashrc #修改配置檔案(如果你用的是zsh,則需要修改 ~/.zshrc檔案)
    #在檔案結尾處新增
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    export PATH=$PATH:/usr/local/cuda/bin
    export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
    
  6. 如果需要版本切換的話,可以參考這篇文章,通過軟鏈進行更換的,但是我發現我不更換也能用。1.8的和1.2.1的都能正常使用gpu。待會還需要驗證下。

安裝cudnn5.1

百度網盤下載:連結:https://pan.baidu.com/s/1UUUgevH6xX9R1-BX5olaTQ
提取碼:hoe7

安裝過程

  1. 解壓tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz

  2. 在當前目錄下檢視都有什麼檔案:

  3. 拷貝指定檔案到指定目錄

    $cd cuda  
    $sudo cp lib64/lib* /usr/local/cuda/lib64/  
    $sudo cp include/cudnn.h /usr/local/cuda/include/
    
  4. 如果有軟鏈的話,建議這樣更新:

    $ sudo chmod +r libcudnn.so.6.0.21
    $ sudo ln -sf libcudnn.so.6.0.21  libcudnn.so.6
    $ sudo ln -sf libcudnn.so.6 libcudnn.so
    $ sudo ldconfig
    

這時候再使用tensorflow1.2.1的話應該沒什問題了。但是有一點比較疑惑,為什麼我配置了1.2.1的環境,tensorflow1.8.0的還能用。有點迷。

報錯記錄

  1. ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory

    安裝cudnn就行了。

  2. ResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [9216,4096] an

    很明顯,OOM,out of Memory,視訊記憶體不夠了,調小引數就行。

  3. TensorFlow報錯FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated......

    重新安裝numpy-1.16-0 安裝版本太高了,更換即可

參考部落格

  1. TensorFlow報錯FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated......
  2. 安裝CUDNN6.0
  3. 在ubuntu上安裝多個版本的CUDA,並且可以隨時切換
  4. ubuntu16.04安裝多個版本CUDA的方法
  5. Ubuntu16.04+cuda-8.0+cudnn-v5.1+tensorflow0.8-gpu/tensorflow1.0-gpu安裝教程
  6. tensorflow-gpu1.8.0+win10+vs2017+CUDA9.2 安裝——從挖坑到跳坑到出坑