我在我的 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.1
到libcuda.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
我能做些什么?