我安装了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
存在的原因是允许在容器内运行的软件与设备驱动程序通信。这是正确的吗?
我的主要困惑点是为什么从容器内部报告CUDA版本为11.4。当我在这个容器内启动一个bash终端并查看/usr/local
中的CUDA安装时,我只看到10.0版本,那么为什么容器内的nvidia-smi
给我安装在主机系统上的CUDA版本?
我相信这些问题显示了对nvidia-smi
如何工作或nvidia-docker
如何工作的根本误解,所以有人可以为我指出可能帮助我解决这个误解的资源吗?
在此设置中不能有多个GPU驱动程序运行。时期。该驱动程序安装在基本机器中。如果您执行了一些不推荐的操作,比如在容器中安装它或尝试将它安装在容器中,那么它仍然是基础机器中对基础机器和容器都有效的那个。注意nvidia-smi
报告的任何都只属于GPU驱动程序,因此使用安装在基本机器中的驱动程序,无论您是在容器内部还是外部运行它。可能会有详细的差异报告,比如可见的gpu,但这不会影响报告的版本。
CUDA运行时版本将是安装在容器中的版本。时期。它没有能力检查容器外的东西。如果它恰好与您在容器外部看到的内容相匹配,那么很简单,您在容器外部和内部都有相同的配置。
可能你的大部分困惑都可以用这个答案解决,也许你的问题是那个问题的重复。