![请帮助在 WSL 2 上配置 NVIDIA-SMI Ubuntu 20.04](https://linux22.com/image/1068862/%E8%AF%B7%E5%B8%AE%E5%8A%A9%E5%9C%A8%20WSL%202%20%E4%B8%8A%E9%85%8D%E7%BD%AE%20NVIDIA-SMI%20Ubuntu%2020.04.png)
- 已安装 Windows 版本 10.0.20150 Build 20150
- 安装了 NVidia 驱动程序版本 455.51
- 从 Windows 商店安装了 Ubuntu 20.04 LTS
我启动了 Ubuntu 并尝试运行 NVIDIA-SMI。它告诉我它不在那里,但我可以使用以下选项之一安装它:
Command 'nvidia-smi' not found, but can be installed with:
sudo apt install nvidia-340 # version 340.108-0ubuntu2, or
sudo apt install nvidia-utils-390 # version 390.132-0ubuntu2
sudo apt install nvidia-utils-435 # version 435.21-0ubuntu7
sudo apt install nvidia-utils-440 # version 440.82+really.440.64-0ubuntu6
请注意,没有nvidia-utils-450
与我的 455.51 对应的选项,上面的 NVidia 线程在某处提到这是使事情顺利进行所必需的。然后我运行
sudo apt install nvidia-utils-440
nvidia-smi
并且显示“未找到设备”。
然后我发现本指南。我卸载了 Ubunto 20.04,然后按照指南操作。指南要求我
- 安装原始 Ubuntu(无版本号),我安装的是 20.04。(结果得到的是 20.04)。
- 安装 Windows Terminal(我选择的是预览版)
- 检查接收相关 Windows 程序的更新
- 将内核更新至 4.9.121
- 在 Windows 10 上安装 NVIDIA CUDA 驱动程序(我已经安装了 455,必须检查 CUDA 版本)
- 安装 Docker
- 安装 NVidia 容器工具包
- 测试
该指南的“安装 docker”部分似乎有问题。我无法启动 docker 服务。因此,我卸载了我的 Ubuntu,并重复了之前的步骤,没有触及 Docker。然后(我的版本),从 Docker 点开始的步骤是(对于 docker 部分,我遵循这些说明用于获取 Docker):
sudo apt-get update
sudo apt-get upgrade
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker
最后一步失败了。我收到以下消息:
$ sudo systemctl status docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
这让我这里第四个也是得分最低的答案似乎有效,只是它需要在后台模式下运行:
sudo dockerd &
sudo usermod -aG docker your-user
然后我回到Docker 安装后指南并继续
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
并且失败了
ERRO[2020-06-23T07:28:28.582848400-04:00] 5cd9b9d7011ba20f72971dd27900b23b2c0f6be656b0bd53b9e178944fe4eba6 cleanup: failed to delete container from containerd: no such container
ERRO[2020-06-23T07:28:28.582946600-04:00] Handler for POST /v1.40/containers/5cd9b9d7011ba20f72971dd27900b23b2c0f6be656b0bd53b9e178944fe4eba6/start returned error: could not select device driver "" with capabilities: [[gpu]]
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
ERRO[0018] error waiting for container: context canceled
最后我回到了NVidia 公告并执行以下步骤:
sudo apt-get update
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo dockerd &
docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
成功:我得到了一个令人满意的结果:
> Windowed mode
> Simulation data stored in video memory
> Single precision floating point simulation
> 1 Devices used for simulation
GPU Device 0: "Quadro M500M" with compute capability 5.0
> Compute 5.0 CUDA device: [Quadro M500M]
3072 bodies, total time for 10 iterations: 3.817 ms
= 24.724 billion interactions per second
= 494.487 single-precision GFLOP/s at 20 flops per interaction
然而根据以下答案,没有 NVIDIA-SMI,根据已知的 NVIDIA 限制。
进一步说明:上面的 docker 容器测试在 Ubuntu shell 上运行。它确实不是使用 Ubuntu 选项卡在 Windows Powershell Preview 上工作。
答案1
如果没人能工作,那么一切配置都已完成。问题在于 NVIDIA 驱动程序的限制。 https://docs.nvidia.com/cuda/wsl-user-guide/index.html#known-limitations
NVIDIA Management Library (NVML) APIs are not supported.
nvidia-smi 基于 NVIDIA 管理库 (NVML)。
答案2
nvidia-smi
自 2022 年 4 月 25 日起, WSL2 现已支持更新
成功安装 CUDA 后,按照 nvidia 官方文档操作:
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
您应该已经nvidia-smi
在 有空,/usr/lib/wsl/lib/nvidia-smi
因此您可以直接添加/usr/lib/wsl/lib
到PATH
就可以轻松运行nvidia-smi
。
export PATH="/usr/lib/wsl/lib/:$PATH"
答案3
@onoma 的答案更新。来自https://docs.nvidia.com/cuda/wsl-user-guide/index.html#known-limitations:
6. nvidia-smi is not yet packaged for CUDA on WSL 2.
希望 Nvidia 将来能够解决这个问题。
答案4
对于较新的版本,nvidia-smi
默认情况下在 WSL2 上受支持,只需安装所需的 Windows CUDA 驱动程序,WSL2 软件包就会随之而来。另外,如果nvidia-smi
不直接在 WSL2 终端上运行,请尝试nvidia-smi.exe
。如果它不起作用,请检查所需的目录(类似/usr/lib/wsl/lib
或/lib/wsl/lib
)是否已添加到 PATH,请参阅https://forums.developer.nvidia.com/t/nvidia-smi-through-wsl2/180310了解更多详细信息。