Mengapa saya mendapatkan "/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 bukan tautan simbolik"?

12

Setelah menginstal CUDAtoolkit dan cuDNNberhasil tanpa masalah, setiap kali saya melakukannya:

sudo ldconfig 

Saya mendapatkan:

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

pesan eror.
apa alasannya dan bagaimana saya bisa menyelesaikan ini?

Omong-omong, saya telah menginstal cuDNNseperti ini:

 # 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

Output ls -lha libcudnn*in /usr/local/cuda/lib64adalah sebagai berikut:

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
Rika
sumber

Jawaban:

16

Terima kasih Tuhan, saya menemukan solusinya menggunakan tautan ini .

Ini dapat terjadi ketika Anda menjalankan sudo ldconfig setelah menyalin file cuDNN.

Setelah menginstal cuDNN, menyalin file yang diekstraksi ke /usr/lib/cuda/lib64dan membuat symlink, ada yang salah dengan symlink.

Jadi pergi /usr/local/cuda/lib64/dan lari ls -lha libcudnn*.

Anda akan melihat dua symlink (cetak tebal) dan satu file tunggal. Sesuatu seperti ini:

/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

Versi persis dari libcudnn.so.5.1.5 mungkin sedikit berbeda untuk Anda (mungkin libcudnn.so.5.1.10). Dalam hal ini, sesuaikan kode tersebut

Jika libcudnn.sodan libcudnn.so.5bukan symlink maka ini adalah alasan mengapa Anda mendapatkan kesalahan ini. Jika demikian, inilah yang perlu Anda lakukan:

/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

Setelah menjalankan ls -lha libcudnn*di /usr/local/cuda/lib64dan melihat:

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

Saya harus melakukan :

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

Dan semuanya kembali normal :)

Rika
sumber
4
Secara teknis tautan simbolik, sebagaimana dimaksud oleh pesan kesalahan, dibuat dengan 'ln -s' bukan hanya 'ln', seperti yang disarankan dalam jawaban, yang akan membuat tautan keras.
Giorgos Sfikas
2

Memeriksa

wxf:/usr/local/cuda/lib64$ ls -al libcudnn.so*
...
...
-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
...
...

Tidak ada hubungan ->

(periksa semua tautan sudo ldconfig -v:)

Karena

(cudnn diunduh dari nvidia memiliki tautan simbolik)

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

Saat kami menyalin, kami kehilangan info simbolik.

memo: ln -s A <-- B

Pergi ke /usr/local/cuda/lib64

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

sudo ln -sf libcudnn.so.7 libcudnn.so

Sekarang,

wxf:/usr/local/cuda/lib64$ ls -al libcudnn.so*
...
...
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
...
skytree
sumber
Penjelasan tentang apa yang terjadi di sini dan mengapa akan sangat dihargai
Rika