web-dev-qa-db-ja.com

「/sbin/ldconfig.real:/usr/local/cuda/lib64/libcudnn.so.7はシンボリックリンクではありません」と表示されるのはなぜですか?

CUDAツールキットとcuDNNを問題なく正常にインストールした後、いつでも実行します。

Sudo ldconfig 

私は得る:

/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 is not a symbolic link

エラーメッセージ。
理由は何ですか。これを解決するにはどうすればよいですか?

ところで、次のようにcuDNNをインストールしました:

 # cuDNN, extracts to a folder named cuda
 tar xvf cudnn*.tgz  
 cd cuda  
 Sudo cp lib64/* /usr/local/cuda/lib64
 Sudo cp include/* /usr/local/cuda/include

ls -lha libcudnn*/usr/local/cuda/lib64の出力は次のとおりです。

breeze@breeze:/usr/local/cuda/lib64$ ls -lha libcudnn*
-rwxr-xr-x 1 root root 275M آوریل 15 12:03 libcudnn.so
-rwxr-xr-x 1 root root 275M آوریل 15 12:03 libcudnn.so.7
-rwxr-xr-x 1 root root 275M آوریل 15 12:03 libcudnn.so.7.0.5
-rw-r--r-- 1 root root 268M آوریل 15 12:03 libcudnn_static.a
10
Breeze

親愛なる神のおかげで、私はこれを使用して解決策を見つけました link

これは、cuDNNファイルのコピー後にSudo ldconfigを実行したときに発生する可能性があります。

cuDNNをインストールし、抽出したファイルを/usr/lib/cuda/lib64にコピーしてシンボリックリンクを作成した後、シンボリックリンクで問題が発生する場合があります。

/usr/local/cuda/lib64/に移動して、ls -lha libcudnn*を実行します。

2つのシンボリックリンク(太字のティール)と1つのファイルが表示されます。このようなもの:

/usr/local/cuda/lib64$ ls -lha libcudnn*
lrwxrwxrwx 1 root root  13 Dez 25 23:56 libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 root root  17 Dez 25 23:55 libcudnn.so.5 -> libcudnn.so.5.1.5
-rwxr-xr-x 1 root root 76M Dez 25 23:27 libcudnn.so.5.1.5

Libcudnn.so.5.1.5の正確なバージョンは、少し異なるかもしれません(おそらくlibcudnn.so.5.1.10)。その場合、それに応じてコードを適合させます

libcudnn.solibcudnn.so.5がシンボリックリンクではない場合、これがこのエラーが発生した理由です。もしそうなら、これはあなたがする必要があるものです:

/usr/local/cuda/lib64$ Sudo rm libcudnn.so
/usr/local/cuda/lib64$ Sudo rm libcudnn.so.5
/usr/local/cuda/lib64$ Sudo ln libcudnn.so.5.1.5 libcudnn.so.5
/usr/local/cuda/lib64$ Sudo ln libcudnn.so.5 libcudnn.so
Run Sudo ldconfig again and there should be no errors

ls -lha libcudnn*/usr/local/cuda/lib64を実行し、以下を確認した後:

breeze@breeze:/usr/local/cuda/lib64$ ls -lha libcudnn*
-rwxr-xr-x 1 root root 275M آوریل 15 12:03 libcudnn.so
-rwxr-xr-x 1 root root 275M آوریل 15 12:03 libcudnn.so.7
-rwxr-xr-x 1 root root 275M آوریل 15 12:03 libcudnn.so.7.0.5
-rw-r--r-- 1 root root 268M آوریل 15 12:03 libcudnn_static.a

私がしなければなりませんでした :

breeze@breeze:/usr/local/cuda/lib64$ Sudo rm libcudnn.so
[Sudo] password for breeze: 
breeze@breeze:/usr/local/cuda/lib64$ Sudo rm libcudnn.so.7
breeze@breeze:/usr/local/cuda/lib64$ Sudo ln libcudnn.so.7.0.5 libcudnn.so.7
breeze@breeze:/usr/local/cuda/lib64$ Sudo ln libcudnn.so.7 libcudnn.so
breeze@breeze:/usr/local/cuda/lib64$ Sudo ldconfig

そして、すべてが正常に戻りました:)

13
Breeze

小切手

wxf:/usr/local/cuda/lib64$ ls -al
...
...
-rwxr-xr-x  3 root root 302770160 Jan 27 14:30 libcudnn.so          NO link
-rwxr-xr-x  3 root root 302770160 Jan 27 14:30 libcudnn.so.7        NO link
-rwxr-xr-x  3 root root 302770160 Jan 27 14:30 libcudnn.so.7.3.1
-rwxr-xr-x  1 root root 349141232 Jan 27 14:30 libcudnn.so.7.4.2
...
...

リンクなし->

(すべてのリンクを確認:Sudo ldconfig -v

なぜなら

(nvidiaからダウンロードしたcudnnにはシンボリックリンクがあります)

wxf:~/cudnn/cuda/lib64$ ls -al
total 974632
drwxrwxr-x 2 wxf wxf      4096 Jan 19 19:50 .
drwxrwxr-x 4 wxf wxf      4096 Jan 19 19:50 ..
lrwxrwxrwx 1 wxf wxf        13 Dec 12 01:58 libcudnn.so -> libcudnn.so.7
lrwxrwxrwx 1 wxf wxf        17 Dec 12 01:58 libcudnn.so.7 -> libcudnn.so.7.4.2
-rwxrwxr-x 1 wxf wxf 302770160 Sep 21 01:36 libcudnn.so.7.3.1
-rwxrwxr-x 1 wxf wxf 349141232 Dec 12 01:30 libcudnn.so.7.4.2
-rw-rw-r-- 1 wxf wxf 346085818 Dec 12 01:30 libcudnn_static.a

コピーすると、シンボリック情報が失われました。

メモ:ln -s A <-- B

/usr/local/cuda/lib64に移動します

Sudo ln -sf libcudnn.so.7.4.2 libcudnn.so.7

Sudo ln -sf libcudnn.so.7 libcudnn.so

さて、

wxf:/usr/local/cuda/lib64$ ls -al
...
...
lrwxrwxrwx  1 root root        13 Jan 27 14:43 libcudnn.so -> libcudnn.so.7
lrwxrwxrwx  1 root root        17 Jan 27 14:43 libcudnn.so.7 -> libcudnn.so.7.4.2
-rwxr-xr-x  1 root root 302770160 Jan 27 14:30 libcudnn.so.7.3.1
-rwxr-xr-x  1 root root 349141232 Jan 27 14:30 libcudnn.so.7.4.2
...
2
skytree