Rik*_*ika 21 nvidia cuda 16.04
安装CUDA工具包并cuDNN成功后没有任何问题,每当我这样做:
sudo ldconfig
Run Code Online (Sandbox Code Playgroud)
我得到:
/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 is not a symbolic link
Run Code Online (Sandbox Code Playgroud)
错误信息。
原因是什么,我该如何解决?
顺便说一下,我是这样安装的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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Rik*_*ika 28
感谢亲爱的上帝,我使用此链接找到了解决方案。
在复制 cuDNN 文件后运行 sudo ldconfig 时可能会发生这种情况。
安装后
cuDNN,将提取的文件复制到/usr/lib/cuda/lib64并创建符号链接,符号链接可能会出错。所以去
/usr/local/cuda/lib64/跑吧ls -lha libcudnn*。您应该会看到两个符号链接(粗体蓝绿色)和一个文件。像这样的东西:
Run Code Online (Sandbox Code Playgroud)/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.5libcudnn.so.5.1.5 的确切版本对您来说可能略有不同(可能是 libcudnn.so.5.1.10)。在这种情况下,相应地调整代码
如果
libcudnn.so和libcudnn.so.5不是符号链接,那么这就是您收到此错误的原因。如果是这样,这就是你需要做的:Run Code Online (Sandbox Code Playgroud)/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
Run Code Online (Sandbox Code Playgroud)
我必须做 :
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
Run Code Online (Sandbox Code Playgroud)
一切都恢复正常了:)
查看
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
...
...
Run Code Online (Sandbox Code Playgroud)
没有链接 ->
(检查所有链接: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
Run Code Online (Sandbox Code Playgroud)
当我们复制时,我们丢失了符号信息。
去 /usr/local/cuda/lib64
sudo ln -sf libcudnn.so.7.4.2 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
Run Code Online (Sandbox Code Playgroud)
现在,
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
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30325 次 |
| 最近记录: |