微軟在//build 2020大會上宣布,適用於Linux的Windows子系統WSL 2(Windows Subsystem for Linux 2)開始支援GPU硬體加速,簡單來說,微軟發布了一個虛擬GPU驅動程式,將虛擬化的GPU暴露給Windows主機上,在虛擬機器中執行的使用者模式應用程式,而這樣可以讓WSL 2環境中的Linux虛擬機器,能夠和Windows主機共享GPU,實現GPU硬體加速。

WSL是一個可以在Windows上執行Linux應用程式的環境,因此當開發者要開發在雲中部署的Linux容器應用程式,則可以先在Windows上進行本地開發和測試,而為了要支援更廣泛的應用,現在微軟讓Linux應用程式和工具,也可以在WSL中獲得GPU加速。

微軟在過去一段時間,發展了客戶端GPU虛擬化技術,而這項技術現在已經整合到了Windows顯示驅動程式模型(WDDM)中,所有WDDM v2.5以及更高版本的驅動程式,都原生支援GPU虛擬化。微軟提到,這項技術被稱為WDDM GPU半虛擬化(GPU Paravirtualization),已經是Windows基礎的一部分,被用在Windows Defender、Application Guard、Windows Sandbox和Hololens 2模擬器等使用案例,不過目前這項技術還僅限於Windows訪客使用,像是在Windows中執行的虛擬機器以及容器。

將GPU加速帶入WSL 2,是透過WDDM將GPU半虛擬化擴展到Linux訪客,而這仰賴新的Linux核心驅動程式實作,該驅動程式利用半虛擬化協定將GPU暴露給用戶模式的Linux,GPU投射抽象遵循WDDM GPU抽象模型,並將針對該抽象所建構的API和驅動程式,移植到Linux環境中使用。

Dxgkrnl是一個全新的Linux核心驅動程式,會將/dev/dxg裝置暴露給使用者模式Linux,微軟提到,當主機上有多個GPU,則所有GPU都會提供給Linux環境使用,在Linux環境中執行的應用程式,其對GPU存取權限和在Windows上的主機應用程式相同,Linux和Windows之間沒有資源分區,也沒有對Linux應用程式設下限制,資源共享是完全動態的,取決於當下哪個程式需要什麼資源。微軟強調,共享GPU的兩個Windows應用程式,和共享GPU的Linux和Windows應用程式沒有差別,當只有Linux應用程式需要GPU,那該應用程式將占用所有GPU資源。

由於要在Linux投射相容WDDM的抽象,因此微軟便重新編譯圖形API DirectX,使其可以在WSL環境中的Linux上運作,微軟提到,這個是真正完整的D3D12 API,並非模擬或是重新實作,libd3d12.so是使用Windows上d3d12.dll相同的程式碼編譯而來,在不考慮虛擬化造成的影響,其提供與Windows相同等級的功能和效能。唯一例外是Present(),D3D12 API目前可用於螢幕外渲染和運算,但尚未支援Swapchain將畫素直接複製到螢幕上。

除此之外,微軟還移植了機器學習API DirectML,現在DirectML可在WSL中的Linux上運作,因此開發者將可以在Linux執行高效能機器學習訓練和預測功能。DirectML建立在D3D12 API之上,提供最佳化的機器學習工作負載運算集合,為了簡化開發者使用DirectML的工作,微軟還發布整合DirectML後端的TensorFlow預覽套件,加速初學者上手。

而且WSL也將會支援Nvidia CUDA加速功能,CUDA是跨平臺API,可以藉由Windows上的WDDM GPU抽象,或Linux上的Nvidia GPU抽象和GPU溝通,微軟和Nvidia合作建置Linux的CUDA版本,該版本針對/dev/dxg暴露的WDDM抽象,微軟提到,這是libcuda.so的完整功能版本,可以用來加速cuDNN、cuBLAS、TensorRT等CUDA-X函式庫。

另外,WSL還支援Nvidia的Docker工具,讓原本在雲端中執行的容器化GPU工作負載,也可以搬到WSL上執行,微軟提到,他們不會在使用者電腦上預裝Nvidia Docker工具,而是跟目前一樣,讓用戶選擇安裝軟體套件包,只是新的軟體套件相容WSL並且提供硬體加速功能。

linux搭建directx环境,微軟開始在WSL 2環境中的Linux支援DirectX相关推荐

  1. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境

    提示:此教程依据乐鑫官方的ESP32入门教程总结而来,仅供个人参考学学习,如有错误,欢迎批评指正.乐鑫官方参考: 乐鑫官方文档地址 1.搭建esp-idf环境 1.1安装虚拟机与Ubuntu 未安装请 ...

  2. 在Linux搭建测试环境-----Java项目(详细)

    在Linux搭建测试环境(Java项目) 项目环境:开发环境.生产环境.测试环境.硬件环境.web服务器.数据库服务器- 软件环境:(Java) JDK1.8+tomcat8.0+MySQL5.7/o ...

  3. Windows/Linux搭建测试环境

    Windows/Linux系统中测试环境的搭建都离不开JAVA运行环境的搭建,一般Java的环境包含JDK 和JRE, JDK: Java Development Kit ,java 的开发工具包.开 ...

  4. linux 搭建 lamp环境搭建,Worktile官方博客,分享企业协作的技巧、工具和实践

    工具/原料 虚拟机及Centos操作系统 Linux基本命令的使用 方法/步骤 首先为了搭建一个稳定的lamp的练习环境,确保你的虚拟机可以连网,这里我们使用的yum安装,它可以帮助我们解决软件自己的 ...

  5. linux搭建flask环境,Ubuntu 环境下搭建Flask框架

    开始安装 Flask,首先创建一个虚拟环境,这个环境能够安装所有的东西,而你的主 Python 不会受到影响.另外一个好处就是这种方式不需要你拥有 root 权限. 开始搭建环境:打开一个终端窗口,选 ...

  6. 嵌入式LINUX搭建arm环境,手把手教你嵌入式ARM开发环境搭建

    原标题:手把手教你嵌入式ARM开发环境搭建 1. 安装,配置,启动FTP服务 · 安装FTP: sudo apt-get install vsftpd · 修改vsftpd的配置文件/etc/vsft ...

  7. Linux搭建Java环境

    Linux下配置Java环境 JDK下载地址: 官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads ...

  8. Linux搭建测试环境教程

    商城网站Linux环境搭建: 准备阶段: 工具准备:WinScp(文件传输).Xshell(连接服务器) 通过WinSCP或Xftp将XX商城网站的软件包拷贝到/opt目录下 环境搭建详细步骤: 一. ...

  9. linux搭建j2ee环境搭建,Eclipse j2ee开发环境的搭建

    Eclipse j2ee开发环境的搭建 J2EE规范是这样定义J2EE组件的:客户端应用程序和applet是运行在客户端的组件.以下是关于Eclipse j2ee开发环境的搭建,欢迎大家参考! 在Li ...

最新文章

  1. 多款激光雷达性能评估
  2. RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)...
  3. django版本区别/与版本匹配
  4. Vue自定义指令-实时时间转换指令 v-time开发
  5. linux下为php开启oci8扩展(ubuntu14亲测可用)
  6. E: Sub-process /usr/bin/dpkg returned an error code (1)
  7. 网管学习日记-ospf多区域
  8. 裴(pei)蜀定理 知识点
  9. 计算机大作业论文意义,重庆大学数理统计大作业——论文
  10. 斯坦福句法分析 java_使用Stanford Parser进行句法分析
  11. 华光职业学院计算机专业,关于给予张庆俊等同学省高校计算机一级 考试成绩优秀奖励的通知...
  12. 教你用微信带称呼群发祝福
  13. 2022-03-25 Python作业3
  14. 究竟是谁,害了骑手小哥?
  15. 传输层 - TCP / UDP 协议详解
  16. 05.python学习系列——画图库turtle(啥是小猪佩奇)
  17. 红帽Linux重置root密码
  18. 一篇小论文:VGGish-BiGRU网络
  19. ps流 转发_一种国标PS流转RTMP直播流的实时转换方法与流程
  20. CentOS6 64bit系统一键快速安装VNC桌面实现Linux桌面

热门文章

  1. java环境用openoffice转pdf
  2. Linux文件夹的打开方式
  3. liunx 下 sendmail 反病毒和防垃圾邮件
  4. matlab gui自定义图片做背景,matlab GUI自定义图片做背景
  5. SOA与EAI的比较
  6. SAP后台作业记录操作
  7. SAP ABAP ALV构建动态输出列与构建动态内表
  8. 定义定价用途的条件类型(Condition Types)
  9. 50、Power Query-Text.Contains的学习
  10. MR21 VS MR22 对CKMLCP结果影响