Tại sao tôi nhận được /sbin / lldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 không phải là một liên kết tượng trưng?


12

Sau khi cài đặt CUDAbộ công cụ và cuDNNthành công mà không có bất kỳ vấn đề, bất cứ khi nào tôi làm:

sudo ldconfig 

Tôi nhận được:

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

thông báo lỗi.
lý do là gì và làm thế nào tôi có thể giải quyết điều này?

Nhân tiện, tôi đã cài đặt cuDNNnhư thế này:

 # 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

Đầu ra của ls -lha libcudnn*in /usr/local/cuda/lib64như sau:

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

Câu trả lời:


16

Nhờ ơn Chúa, tôi đã tìm ra giải pháp bằng liên kết này .

Điều này có thể xảy ra khi bạn chạy sudo ldconfig sau khi sao chép tệp cuDNN.

Sau khi cài đặt cuDNN, sao chép các tệp được giải nén vào /usr/lib/cuda/lib64và tạo các liên kết tượng trưng, ​​mọi thứ có thể sai với các liên kết tượng trưng.

Vì vậy, đi đến /usr/local/cuda/lib64/và chạy ls -lha libcudnn*.

Bạn sẽ thấy hai liên kết tượng trưng (teal đậm) và một tệp duy nhất. Một cái gì đó như thế này:

/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

Phiên bản chính xác của libcudnn.so.5.1.5 có thể khác một chút đối với bạn (có thể là libcudnn.so.5.1.10). Trong trường hợp đó, điều chỉnh mã cho phù hợp

Nếu libcudnn.solibcudnn.so.5không phải là symlink thì đây là lý do tại sao bạn gặp lỗi này. Nếu vậy, đây là những gì bạn cần làm:

/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

Sau khi chạy ls -lha libcudnn*vào /usr/local/cuda/lib64và thấy:

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

Tôi phải làm :

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

Và mọi thứ trở lại bình thường :)


4
Về mặt kỹ thuật, một liên kết tượng trưng, ​​như được thông báo bởi thông báo lỗi, được tạo bằng 'ln -s' thay vì chỉ đơn giản là 'ln', như được đề xuất trong câu trả lời, sẽ tạo ra một liên kết cứng.
Giorgos Sfikas

2

Kiểm tra

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
...
...

Không có liên kết ->

(kiểm tra tất cả các liên kết sudo ldconfig -v:)

Bởi vì

(cudnn tải xuống từ nvidia có liên kết tượng trưng)

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

Khi chúng tôi sao chép, chúng tôi bị mất thông tin tượng trưng.

ghi nhớ: ln -s A <-- B

Đi đến /usr/local/cuda/lib64

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

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

Hiện nay,

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
...

Một lời giải thích về những gì đang diễn ra ở đây và tại sao sẽ được đánh giá cao
Rika
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.