1. 程式人生 > >Ubuntu16.4+cuda9.0+cudnn7.4+tensorflow1.7環境搭建

Ubuntu16.4+cuda9.0+cudnn7.4+tensorflow1.7環境搭建

首先安裝Anaconda

  1. Anaconda官網安裝Anaconda相應的版本。
  2. 執行如下命令bash Anaconda3-4.2.0-Linux-x86_64.sh(對應本文下載的Anaconda版本)
  3. 一直確認,直到出現提示 Anaconda3 install Location to PATH in your /home/使用者名稱/.bashrc?[yes|no]?。意思是要將anaconda加入到環境變數,以後Python預設版本變為該版本Python

安裝CUDA

  1. NVIDIA官網下載對應版本的cuda,如果以前沒有安裝過cuda,可以下載.deb檔案,如果已經安裝過,則下載.run檔案。推薦使用.run檔案,可以安裝指定版本的cuda,否則總是要求安裝最新的,或者不能在已有高版本的情況下,安裝低版本。
  2. 下載之後,按照官網提示的安裝命令安裝

  3. 安裝後重啟電腦,在usr/local/cuda/samples目錄下執行sudo make all命令
  4. 如果成功,則提示Finished building CUDA samples
  5. 之後進入usr/local/cuda/extras/demo_suite資料夾下執行./deviceQuery

安裝cudnn

  1. 進入cudnn官網(需要先註冊賬號),下載對應cuda的cudnn版本
  2. 在下的目錄進行解壓tar -zxvf cudnn-9.0-linux-x64-v7.4.2.24.tgz
  3. 解壓後會出現名為cuda的資料夾,其中裡面有lib64和include兩個資料夾
  4. 執行
    sudo cp lib64/libcudnn* /usr/local/cuda/lib64
    sudo cp include/cudnn.h /usr/local/cuda/include

     

  5. cd /usr/local/cuda/lib64/
    sudo chmod +r libcudnn.so.7.4.2(自己的版本號)
    sudo ln -s libcudnn.so.7.4.2 libcudnn.so.7
    sudo ln -s libcudnn.so.7.4.2 libcudnn.so
    sudo ldconfig

    更新軟連線,如果出現已有軟連線,則百度一下,刪除原來軟連線

  6. 在~/.bashrc檔案里加入環境變數

    export PATH="/home/zhangpf/Anaconda/python/bin:/usr/local/cuda-9.0/bin:$PATH"
    export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CPUTI/lib64:$LD_LIBRARY_PATH
    export CUDA_HOME=/usr/local/cuda-9.0
    

    加入後,執行source ~/.bashrc更新

安裝Tensorflow

  1. 使用清華源下載安裝
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow(CPU版本)
    
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.7(GPU版本,可以自己指定版本號)

     

  2. 使用網上的例子測試tensorflow是否安裝成功,且是使用GPU訓練

    import numpy
    import tensorflow as tf
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)
    sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
    print(sess.run(c))
    

    結果為下所示,則成功,並且用GPU訓練

    Device mapping:
    /job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Tesla K40c, pci bus
    id: 0000:05:00.0
    b: /job:localhost/replica:0/task:0/device:GPU:0
    a: /job:localhost/replica:0/task:0/device:GPU:0
    MatMul: /job:localhost/replica:0/task:0/device:GPU:0
    [[ 22.  28.]
     [ 49.  64.]]