Please help configuring NVIDIA-SMI Ubuntu 20.04 on WSL 2
Matthew Martinez
Following this announcement and somewhat trying to follow this confusing thread, I
- installed Windows Version 10.0.20150 Build 20150
- installed NVidia Driver version 455.51
- installed Ubuntu 20.04 LTS from the Windows Store
I started Ubuntu and tried to run NVIDIA-SMI. It told me it wasn't there but that I could install it with one of these options:
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-0ubuntu6Note that there is no nvidia-utils-450 option corresponding to my 455.51, which the NVidia thread above said somewhere is required to make things go. I then ran
sudo apt install nvidia-utils-440
nvidia-smiand it said "No devices found".
Then I found this guide. I uninstalled Ubunto 20.04, and then followed the guide. The guide asked me to
- install a vanilla Ubuntu (no release number), which I did instead of 20.04. (This turns out to give me 20.04).
- install Windows Terminal (I chose the Preview version)
- check to receive updates for related Windows programs
- update the kernel to 4.9.121
- install NVIDIA CUDA drivers on Windows 10 (I already did 455, have to check the CUDA release)
- install Docker
- install NVidia Container Toolkit
- test
The "install docker" part of that guide seems to be buggy. I couldn't get docker service to start. So I uninstalled my Ubuntu and repeated the steps up to that point, without touching Docker. Then (my version), the steps from the Docker point are (for docker part I am following these instructions to get 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 | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status dockerThe last step fails. I get this message:
$ 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 downThat led me here and the 4th and almost lowest-scored answer seems to work, except it needs to be run in background mode:
sudo dockerd &
sudo usermod -aG docker your-userThen I go back to the guide post-Docker install step and resume with
docker run --gpus all nbody -gpu -benchmarkand this fails with
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 canceledFinally I went back to the NVidia announcement and did these steps:
sudo apt-get update
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L | sudo apt-key add -
curl -s -L | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
curl -s -L | 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 nbody -gpu -benchmarkSUCCESS: and I got a happy result:
> 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 interactionHOWEVER, per answer below, there is no NVIDIA-SMI, per known NVIDIA limitations.
FURTHER NOTE: The docker container test above works on Ubuntu shell. It does not work on Windows Powershell Preview with the Ubuntu tab.
13 Answers
If nbody works then you have everything well configured. The problem is NVIDIA drivers limitations.
NVIDIA Management Library (NVML) APIs are not supported.
nvidia-smi is based on top of the NVIDIA Management Library (NVML).
An update to @onoma's answer. From :
6. nvidia-smi is not yet packaged for CUDA on WSL 2.Hopefully this will be solved in future by nvidia.
An update as of Apr 25, 2022nvidia-smi is now supported on WSL2
After successful installation of CUDA following official nvidia doc:
wget
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget
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 cudaYou should have nvidia-smi available at usr/lib/wsl/lib/nvidia-smi so you can just add usr/lib/wsl/lib to PATH to easily run nvidia-smi.