在我的WSL 2/Insider上,我收到一条消息,说我没有安装正确的nvidia驱动程序。因为驱动器安装在windows操作系统的下方。 向Microsoft和NVIDIA查询后发现,硬件加速并未通过,而且他们近期也没有这样做的计划。 Windows docker在widnows操作系统上,可能没问题。会检查。
我认为docker run --gpus都可以解决,你需要在你的linux docker和cuda sdk上安装nvidea驱动程序。我认为另一种方法是使用参数--privileged给予所有权限:docker run --privileged和其他你需要的参数,你需要考虑一下,因为有了privileged,docker就可以访问你的真实的机器了。
6条答案
按热度按时间1cosmwyk1#
**更新(2020年12月)**如果您使用WSL 2作为Docker的后端,您现在可以在Windows上进行GPU直通:WSL 2 GPU Support is Here-这是一个比在WSL中运行Docker * 稍微整洁的方法。
原答复:
目前Windows上不支持从Docker容器内访问GPU。
您需要
nvidia-docker
,但目前仅在Linux平台上支持。使用Hyper-v的GPU直通需要离散设备分配(DDA),目前仅在Windows Server中提供,并且(at least in 2015)没有计划改变这种状态。因此,NVIDIA目前没有将nvidia-docker
移植到Windows。更多信息请点击这里:https://devblogs.nvidia.com/nvidia-docker-gpu-server-application-deployment-made-easy/
更新(2019年10月):
nvidia-docker
已弃用,因为Docker 19.03对NVIDIA GPU有原生支持。请安装nvidia-container-runtime
,并使用docker run --gpus all
标志。您也可以使用Docker 19.03在Windows主机上运行Windows Containers with GPU acceleration,但不能在Linux容器上运行。更新(2020年8月):看起来你现在可以在Windows Linux子系统(WSL 2)中运行Docker时进行GPU直通。
此链接通过安装,设置和运行TensorFlow Jupyter笔记本在WSL 2的Ubuntu中的Docker中,具有GPU支持:https://ubuntu.com/blog/getting-started-with-cuda-on-ubuntu-on-wsl-2
注意-我自己还没有这样做。
tvokkenx2#
现在Windows 10上的docker可以访问WSL 2(从Windows 10版本2004开始),它为Windows 10上的Linux docker容器的GPU支持扫清了道路。
根据这个官方博客,MS“将在未来几个月内开始预览Windows 10 Insider构建中对WSL的GPU计算支持”:https://devblogs.microsoft.com/commandline/the-windows-subsystem-for-linux-build-2020-summary/#wsl-gpu
我预计Docker GPU支持将在不久之后推出。
更新日期:
Windows中的GPU直通现在可以在非常特定的情况下实现,包括:
参考:https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/gpu-acceleration
更新2:
现在可以在最新的Windows Insider版本上从Windows主机上的Linux Docker进行GPU传递,请参阅:
https://ubuntu.com/blog/getting-started-with-cuda-on-ubuntu-on-wsl-2
这可能会在下一次重大更新中流入主流Windows。
更新三:
确认Windows build版本2021将包括WSL的GPU直通。请在此处查看公告的详细信息:https://blogs.windows.com/windowsdeveloper/2021/05/25/the-windows-developers-guide-to-microsoft-build-2021/
nnvyjq4y3#
2021更新答案
如果您需要在Windows 10上从Linux容器访问NVIDIA CUDA,有一种简单的方法可以做到这一点,如果您对Insider构建的(当前)要求没有问题。我使用这种方法在TensorFlow 2中的GPU上成功训练模型。
1.将Windows 10更新为build 20149或更高版本。在撰写本文时,只有Insider Dev分支可以工作-您可以在Windows Insider webpage * 上检查内部版本号。
1.安装NVIDIA CUDA WSL driver(需要免费注册)
Settings - General - Use the WSL2 backed engine
,请将其更新到最新版本并启用Settings - General - Use the WSL2 backed engine
。docker
CLI,请启用Settings - Resources - WSL INTEGRATION
中的集成。docker run --rm -it --gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody
进行测试您需要将
--gpus=all
传递给docker run
以启用容器访问GPU。(如果您使用VSCode远程容器,请将"runArgs": ["--gpus=all"],
添加到devcontainer.json
。)您可能会在
nvidia-docker
(如official TensorFlow images)的图像描述中遇到--runtime=nvidia
。只需在提供的命令中将--runtime=nvidia
替换为--gpus=all
。oyt4ldly4#
提供样品!
这将表明ffmpeg版本可以处理:一个月一个月一个月一个月一个月一个月一个月一个月一个月二个月一个月
在我的WSL 2/Insider上,我收到一条消息,说我没有安装正确的nvidia驱动程序。因为驱动器安装在windows操作系统的下方。
向Microsoft和NVIDIA查询后发现,硬件加速并未通过,而且他们近期也没有这样做的计划。
Windows docker在widnows操作系统上,可能没问题。会检查。
vcudknz35#
我认为docker run --gpus都可以解决,你需要在你的linux docker和cuda sdk上安装nvidea驱动程序。我认为另一种方法是使用参数--privileged给予所有权限:docker run --privileged和其他你需要的参数,你需要考虑一下,因为有了privileged,docker就可以访问你的真实的机器了。
wn9m85ua6#
请注意,在WSL 2/windows-Insider实现中,不支持视频解码-编码的硬件加速。
因此,任何GPU功能都可以在WSL 2上使用,但视频编码-解码不能由硬件完成。
尝试请求ffmpeg使用硬件加速导致错误消息。(skvideo,它是ffmpeg Package 器,崩溃)
还不确定gStreamer。但可以肯定的是,它不能使用硬件加速,因为它没有通过界面“漏斗”。
据我所知-目前还没有计划添加此支持。
最好的,米奇