1. 程式人生 > >ubuntu安裝/更新cudnn版本遇到的問題

ubuntu安裝/更新cudnn版本遇到的問題

之前因為複製cudnn.h的時候,cudnn的版本沒有沒有檢測出來,——檢測cudnn已經安裝好版本的方法是:在caffe目錄下,mkdir build,然後sudo cmake ..(注意這個是兩個點),然後就會顯示系統當中所有caffe需要的安裝配置環境

因為cudnn.h沒有替換好,所以需要將/usr/local/include下面的
cudnn.h還是原來的version4版本,而不是最新的cudnn version 6版本,因此會報錯,說cudnn.hpp第100行報錯,因為我的gpu是泰坦,所以滿足nvidia 大於3.0的要求

替換一下之後接著再make runtest就可以了

安裝cuDNN

下載cuDNN後解壓

cd lib64

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

cd include

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


更新軟連結

cd /usr/local/cuda/lib64/

sudo rm -rf libcudnn.so libcudnn.so.5

sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5

sudo ln -s libcudnn.so.5 libcudnn.so

若需要更換cudnn版本,則替換原來的libcudnn*,並重新軟連結。

更新連結庫:

sudo ldconfig

-------------------------------

遇到的問題:

報錯

$/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 不是符號連線

$/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 不是符號連線

原因:

系統找的是一個符號連線,而不是一個檔案。這應該是個bug....

解決方法:

1.對這兩個檔案更名

2.重新建立符號連線

$sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org

$sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org

$sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1

$sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

-----------------------------------------------

檢視 CUDA 版本:

cat /usr/local/cuda/version.txt
  • 1

檢視 CUDNN 版本:

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

==============================================================

標籤: cudalinux軟連結cudnn

2016-10-06 23:20 5022人閱讀 評論(0)收藏舉報

分類:

Tensorflow(5)

linux(3)

目錄(?)[+]

  1. 總說
  2. 路徑問題

總說

這篇部落格主要是給自己看的。哎哎,他們在我電腦跑程式,一會兒他把cudnn換成5.0的,一會兒又被另一個換成3.0的,然而最近別人在我電腦編譯的tensorflow是基於cudnn是5.1的,然而我現在的版本是5.0的,出現錯誤。

sudo tar -zxvf cudnn-7.5-linux-x64-v5.1.tgz
cd cuda
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/* /usr/local/cuda/lib64/
  • 1
  • 2
  • 3
  • 4

  • 1
  • 2
  • 3
  • 4

上面沒什麼好說的,就是把相應的檔案cudnn.h檔案和lib64資料夾下的連結庫檔案考入相應的位置唄。
注意:解壓出來的lib64下面有3個so檔案。分別是 libcudnn.so 和 libcudnn.so.5以及 libcudnn.so.5.1.3檔案。 並且這3個點so檔案大小都一樣。其實都是軟連線!libcudnn.so連結到libcudnn.so.5,而libcudnn.so.5.又連結到libcudnn.so.5.1.3。 正真的檔案只有libcudnn.so.5.1.3,因此我們要將/usr/local/lib64下的以前的這樣的連結替換掉。由於裝cuda時,比如我裝的是cuda8.0,那麼在/usr/local/下會生成cuda-8.0資料夾,以及一個cuda資料夾,cuda是軟連結到cuda-8.0的,所以這兩個資料夾可以看成一個。往任意一個資料夾中新增東西,另一個資料夾都會有相同的東西。

cd /usr/local/cuda/lib64
ll
  • 1
  • 2

  • 1
  • 2

出現:

-rw-r--r-- 1 root root    720192  8月 16  2015 libcudart_static.a
lrwxrwxrwx 1 root root        15 10月  3 22:39 libcudnn.so -> libcudnn.so.5.0*
lrwxrwxrwx 1 root root        17 10月  4 18:34 libcudnn.so.5 -> libcudnn.so.5.0.
  • 1
  • 2
  • 3

  • 1
  • 2
  • 3

我們需要把以前的這3個檔案刪除。libcudnn.so和libcudnn.so.5以及libcudnn.so.5.0

sudo rm libcudnn.so.5 libcudnn.so.5.0*
sudo rm libcudnn.so
  • 1
  • 2

  • 1
  • 2

然後自己建立類似的連結。由於5.1已經被連結到了5.1.3上了。所以我們要刪掉以前的.so檔案,然後建立新的.so檔案,並且連結到5.1上。

sudo ln -s libcudnn.so.5.1 libcudnn.so
ll
  • 1
  • 2

  • 1
  • 2

最後出現

lrwxrwxrwx 1 root root        15 10月  6 22:40 libcudnn.so -> libcudnn.so.5.1*
lrwxrwxrwx 1 root root        17 10月  6 22:40 libcudnn.so.5.1 -> libcudnn.so.5.1.3*
-rwxr-xr-x 1 root root  60696704 10月  6 22:37 libcudnn.so.5.1.3*
-rwxrwxrwx 1 root root  59715990 10月  6 22:37 libcudnn_static.a*
  • 1
  • 2
  • 3
  • 4
  • 5

  • 1
  • 2
  • 3
  • 4
  • 5

路徑問題

這裡寫圖片描述
由於某種原因,出現了這個問題。cudnn連結有問題,就知道要麼是路徑有問題了。查看了一下/usr/local/cuda,發現cudnn並沒有連結上,所以按照上面的方法進行連結。
這裡怎麼說是找主資料夾下的torch/install/lib來找cudnn呢?
在前面安裝torch時,有個選項說是否把這個路徑LD_LIBRARY_PATH加入到.bashrc中。點了Yes。於是檢視

vim ~/.bashrc
  • 1

  • 1

發現最後一行是

. /home/yan/torch/install/bin/torch-activate
  • 1

  • 1

那麼接著找這個torch-activate

export LUA_PATH='/home/yan/.luarocks/share/lua/5.1/?.lua;/home/yan/.luarocks/share/lua/5.1/?/init.lua;/home/yan/torch/install/share/lua/5.1/?.lua;/home/yan/torch/install/share/lua/5.1/?/init.lua;./?.lua;/home/yan/torch/install/share/luajit-2.1.0-beta1/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua'
export LUA_CPATH='/home/yan/.luarocks/lib/lua/5.1/?.so;/home/yan/torch/install/lib/lua/5.1/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so'
export PATH=/home/yan/torch/install/bin:$PATH
export LD_LIBRARY_PATH=/home/yan/torch/install/lib:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/home/yan/torch/install/lib:$DYLD_LIBRARY_PATH
export LUA_CPATH='/home/yan/torch/install/lib/?.so;'$LUA_CPATH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

發現這裡在原來的$LD_LIBRARY_PATH變數前面加入了/home/yan/torch/install/lib。那麼按照類似的方法,簡單粗暴的直接在.bashrc中加入cuda路徑。

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export CUDA_HOME=/usr/local/cuda
  • 1
  • 2

  • 1
  • 2

Tensorflow的官方文件中加入了extras/CUPTI/lib64的路徑和/usr/local/cuda的。這個主要是有libcputi.so檔案,如果不加的話會Couldn't open CUDA library libcupti.so
最後的最後乾脆粗暴點,直接執行下面2句。

source ~/.bashrc
sudo ldconfig
  • 1
  • 2

  • 1
  • 2

這裡寫圖片描述

1

0

  相關文章推薦