天天看點

WSL2 的docker裡使用顯示卡的安裝

懶得看的話直接跳到結論

1 先根據這裡https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#simplified-installation-for-windows-insiders簡化安裝了WSL,在安裝過程中出現了如下報錯,我沒有去管他。0x80072efe

WSL2 的docker裡使用顯示卡的安裝

2 繼續根據上述網址去microsoft store 安裝了ubuntu1804。或者是先根據https://docs.nvidia.com/cuda/wsl-user-guide/index.html裝了一個顯示卡驅動(我裝的是465.42)?順序不記得了

3 在WSL ubuntu裡輸入nvidia-smi, 報錯-bash: /usr/lib/wsl/lib/nvidia-smi: Permission denied。我們再去https://docs.nvidia.com/cuda/wsl-user-guide/index.html仔細看一下發現少裝了一個東西: windows subsystem for linux update,這個聽起來就是很重要的東西。根據教程安裝了這個東西

4 繼續跟着英偉達的教程,但是apt-get install -y cuda-toolkit-11-0 報錯can not locate package。(而且我的cuda是11.3, 但是截止我寫這篇記錄最新的是cuda-toolkit-11-2)于是我從這裡https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=WSLUbuntu&target_version=20&target_type=runfilelocal安裝了cuda toolkit。但是裝完後顯示找不到CUDA Driver,于是安裝裝完後的提示sudo sh cuda_11.2.2_460.32.03_linux.run --silent –driver。(記得把安裝完的日志資訊截個圖)

5算了,重新去https://developer.nvidia.com/cuda/wsl/download裝個顯示卡驅動 (此時最新的是470.75了)看看吧。

6 第五步裝完以後看起來還是不對勁:nvidia-smi和driver version不一樣而且 segmentation fault

WSL2 的docker裡使用顯示卡的安裝

7 想起來我之前成功在WSL裡安裝顯示卡驅動時,裡面的顯示卡驅動和外面是一樣的,說明第四步估計是沒用的(我之前也執行過第四步,估計後來又解除安裝了),因為第四步是不可能裝上cuda11.3的(我雷蛇上的WSL顯示的是11。3),第四步提供的安裝包裡沒有這麼新的cuda版本。那就根據第四步的日志來解除安裝cuda,全部勾上

WSL2 的docker裡使用顯示卡的安裝

8 第七步執行完後重新開機電腦,但nvidia-smi 和driver version還是不比對

于是直接重置ubuntu看看 應用設定-重置。 重置以後得去microsoft store重新安裝一下ubuntu1804,要不然啟動不了ubuntu1804(點選圖示沒反應)

WSL2 的docker裡使用顯示卡的安裝
WSL2 的docker裡使用顯示卡的安裝

9 輸入nvidia-smi,還是報錯-bash: /usr/bin/nvidia-smi: Permission denied。但是神奇的是!!!容器裡面應該是能用顯示卡的!!甚至容器裡面剛開始運作起來的時候(pytorch:20.10這個容器)都報錯WARNING: The NVIDIA Driver was not detected. GPU functionality will not be available.

Use ‘nvidia-docker run’ to start this container; see

https://github.com/NVIDIA/nvidia-docker/wiki/nvidia-docker但是代碼的運作速度表明顯示卡能正常使用,然後發現根據官方文檔https://docs.nvidia.com/cuda/pdf/CUDA_on_WSL_User_Guide.pdf 這個警告隻是一個bug,後續會修複,即使有這個警告也不代表用不了顯示卡。

結論:

根據官方文檔https://docs.nvidia.com/cuda/wsl-user-guide/index.html#installing-docker 的getting started的3步搞完後。再裝下docker就可以了(應該可以用apt很友善地裝)。甚至即使WSL 裡nvidia-smi指令不能正常運作,但是容器裡面的顯示卡确實能正常使用的