为什么符号链接 /usr/lib/x86_64-linux-gnu/libcuda.so.1 会不断自动重置?

为什么符号链接 /usr/lib/x86_64-linux-gnu/libcuda.so.1 会不断自动重置?

我在我的 ubuntu 服务器上使用 nvidia docker 镜像构建了一个 docker 容器nvidia/cuda:10.2-cudnn8-devel-ubuntu18.04来运行 pytorch 程序。服务器安装的 nvidia 驱动程序版本为 430.26,而 docker 镜像自带的驱动程序版本为 440.118.02。在/usr/lib/x86_64-linux-gnu/docker 容器内的目录中,有以下文件,其名称包含libcuda

root@cuda102cudnn8_3ddepth:/usr/lib/x86_64-linux-gnu# ls -la libcuda*
lrwxrwxrwx 1 root root       12 Nov 27 08:45 libcuda.so -> libcuda.so.1
lrwxrwxrwx 1 root root       21 Nov 27 12:33 libcuda.so.1 -> libcuda.so.440.118.02
-rw-r--r-- 1 root root 16120456 Jun  4  2019 libcuda.so.430.26
-rw-r--r-- 1 root root 16824128 Sep  3 10:08 libcuda.so.440.118.02

现在,为了使基于 GPU 的 pytorch 程序在 GPU 上运行,docker 容器使用的 nvidia 驱动程序版本不应超过主机上安装的版本。所以我必须手动重新链接libcuda.so.1libcuda.430.26(这确实有效)。

奇怪的是,libcuda.so.440.118.02一段时间后链接不断被重置。我不确定是什么触发了这种情况。但我可以肯定,重新启动容器会重置链接,而重新source ~/.bashrc启动则不会。我认为在我安装了某些东西后它也会被重置,但我不确定。

什么可能触发此自动重置?我真的不想每次都手动重置链接。如果我尝试重命名或删除,libcuda.so.440.118.02我会得到

root@cuda102cudnn8_3ddepth:/usr/lib/x86_64-linux-gnu# rm -rf libcuda.so.440.118.02
rm: cannot remove 'libcuda.so.440.118.02': Device or resource busy

我能做些什么?

相关内容