成功安装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*
in的输出/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
答案1
感谢上帝,我找到了解决方案关联。
复制 cuDNN 文件后运行 sudo ldconfig 时可能会发生这种情况。
安装
cuDNN
、复制解压的文件到/usr/lib/cuda/lib64
并创建符号链接后,符号链接可能会出现问题。所以去
/usr/local/cuda/lib64/
跑吧ls -lha libcudnn*
。您应该看到两个符号链接(粗体青色)和一个文件。如下所示:
/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.so
和libcudnn.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
一切恢复正常:)
答案2
查看
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
...
...
没有链接->
(检查所有链接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
当我们复制时,我们丢失了符号信息。
去/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 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
...