请帮助在 WSL 2 上配置 NVIDIA-SMI Ubuntu 20.04

请帮助在 WSL 2 上配置 NVIDIA-SMI Ubuntu 20.04

下列的本公告并试图跟随这个令人困惑的线索, 我

  • 已安装 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/libPATH就可以轻松运行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了解更多详细信息。

相关内容