为什么 nvidia-smi 在 docker 容器内外显示相同的 CUDA 版本和驱动程序版本?

Why does nvidia-smi show same CUDA version and driver version both inside and outside of docker container?

我安装了 nvidia-docker 并且为了测试我的安装,我 运行 docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi。我明白了

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02    Driver Version: 470.57.02    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro T2000 wi...  On   | 00000000:01:00.0  On |                  N/A |
| N/A   46C    P0    10W /  N/A |   2294MiB /  3911MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

驱动程序版本和 CUDA 版本与我在常规终端的容器外 运行 nvidia-smi 时得到的完全相同。我对为什么驱动版本相同的理解是设备驱动是特定于硬件的,因此不会安装在容器内,而 nvidia-docker 存在的原因是允许软件 运行ning 在容器内与设备驱动程序对话的容器。这是正确的吗?

我的主要困惑是为什么从容器内部报告 CUDA 版本为 11.4。当我在这个容器内启动一个 bash 终端并查看 /usr/local 中的 CUDA 安装时,我只看到版本 10.0,那么为什么容器内的 nvidia-smi 给我安装了 CUDA 版本主机系统?

我认为这些问题显示了对 nvidia-sminvidia-docker 工作方式的根本误解,所以有人可以向我指出可以帮助我解决这种误解的资源吗?

在此设置中运行的 GPU 驱动程序不能超过 1 个。时期。该驱动程序安装在基础机器中。如果你做了一些不推荐的事情,比如安装它或试图将它安装在容器中,它仍然是基础机器中对基础机器和容器有效的那个。请注意,nvidia-smi 报告的 任何内容 仅与 GPU 驱动程序有关 ,因此使用的是基本机器中安装的驱动程序,无论你 运行 它在容器内部或外部。可能存在详细的报告差异,例如可见的 GPU,但这不会影响报告的版本。

CUDA 运行时间版本将是安装在容器中的版本。时期。它无法检查容器外部的内容。如果它恰好与你在容器外看到的相匹配,那么这只是你在容器外和容器内具有相同配置的情况。

可能您的大部分困惑将通过 得到解决,也许您的问题与那个问题重复。