我所知的有hyper-v, vmware, virtualBox, docker,还有win10商店里面的linux子系统,这些中间该选哪个呢?或者还有更好的选择吗?


2020-6-2更新

woc ms好像真的良心发现了,wsl貌似要支持gpu了

GPU in Windows Subsystem for Linux (WSL)?

developer.nvidia.com图标https://news.developer.nvidia.com/microsoft-and-nvidia-announce-june-preview-for-gpu-acceleration-support-for-wsl/?

news.developer.nvidia.com

下面是原回答

------------------------------------------------------------------

今晚刚好在尝试显卡直通,查完资料顺便来回答一下

结论:目前无法将gpu直通进hyper-v内的虚拟机

  1. 如果是windows server 2016以上的系统,hyper-v支持DDA,但是需要主板支持(官方的说法好像是现在的大多数的电脑主板都支持?)
  2. 如果在windows 10上的hyper-v,是无法进行pcie直通的,如果非要尝试只会得到如下报错:

无法启动虚拟机

3. 但是reddit上好像有人直接问了hyper-v的开发人员,得到的答复是如果是amd的卡如果在windows server能直通的话,在win10也能直通(没A卡没试过),目前答主也没搜到有人在windows 10上直通成功的案例....

4. windows server上好像是可以直通gtx 1070这种显卡的,不一定需要企业版gpu,有人直通成功了...,不过nvidia会检测当前显卡是否工作在vm环境,如果在则会拒绝载入驱动。解决方案也有:https://forums.unraid.net/topic/69670-guide-fix-nvidia-code-43-issue-on-nvidia-gpu/

5. 同时有人做了对比,在同一台机器上同时安装windows server 2016和windows 10,windows server 能通进去的显卡,在win10下就是不行,估计是ms在代码上做了屏蔽....

说不定哪天ms良心发现win10就可以用DDA了(x

或者wsl突然支持gpu?

由于答主本身电脑是win10,并没有安装windows server,所以没法测试上面搜集到的资料的真实性....

参考资料:

  1. https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/deploy/deploying-graphics-devices-using-dda

2. https://www.videogames.ai/2019/02/07/Ubuntu-Hyper-V-GPU.html


Windows 10上的虚拟机都跑不了GPU版本的TensorFlow和pyTouch...建议直接使用Windows的版本。

Windows上支持虚拟机里使用Cuda的应该只有Hyper-V,但是条件苛刻:

1- 需要使用Windows Server 2016;

2- CPU需要支持SLAT,还有VT-D或者I/OMMU;

3- 企业版GPU,GeForce不行。

这明显不是提供给个人的方案了...


消费卡的话,需要做一点 hack。

比如把 RTX 2070 Super 虚拟成 T4:


如果要在win10上用gpu版本的tensorflow,和pytorch,只能用windows版本的。虚拟机要虚拟化gpu支持cuda也不是不行,但是要求很苛刻,

1.cpu和主板支持vt-d

2.VMware ESXi这个就悲剧了,这个是装在裸机上的,所以就是没法在win10上装

3.Quadro系列专业卡,gtx系列的游戏卡是肯定不行的。

win10的linux子系统是肯定不行的,没有驱动。

所以还是要不老实用windows版本的tf和pytorch要不就装linux。虚拟机是不可能的


linux好一些


正常人会安装vSphere,在里面跑Windows。而不是反过来。

https://docs.nvidia.com/grid/5.0/grid-vgpu-release-notes-vmware-vsphere/index.html


建议直接放弃, Windows 上 99% 的虚拟机 GPU 都是 API 虚拟化.


直接windows版拉倒吧,最简单了。而且只有hyperv可以用物理gpu,


虚拟机GPU性能较好的就vmware或hyper-v

docker是Linux专用


GPU版本需要用到CUDA加速,虚拟机环境不支持CUDA,慎用


推荐阅读:
相关文章