微軟在//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. java readtoend_java项目和C#项目实现通信
  3. tarnado源码解析系列一
  4. RandomForestClassifier(随机森林检测每个特征的重要性及每个样例属于哪个类的概率)...
  5. Linux——VIM开发C++自动补全(STL、括号)和开发环境配置
  6. 可视化折线圆形统计图_统计图表的优雅变换:Altair|可视化系列06
  7. 在Ubuntu上安装Docker –分步指南
  8. centos 6.5 搭建svn
  9. 严蔚敏数据结构之线性表的基本操作
  10. python pip卸载不了库,比如使用pyinstaller时greenlet报错但卸载不了
  11. 【解决方案】Ubuntu18.04 安装L2TP及相关设置
  12. 使用 conda uninstall xxx时,一直卡在 Collecting package metadata (repodata.json)
  13. 指数型组织到底是什么
  14. 机器人工程行业算制造业吗
  15. C++ 控制台编译时显示‘ ld returned 1 exit status’
  16. 2016新年读书计划
  17. MMI笔记 virtual environments, audio for virtual environments 知识点总结
  18. 字节跳动算法工程师总结:腾讯+字节+阿里面经真题汇总,含面试题+答案
  19. Python与人工神经网络(5)——交叉熵成本函数
  20. 旅途——Python流程控制

热门文章

  1. ArcGis 10+Oracle发布WFS-T服务,无法更新Feature的解决方法
  2. 【hta版】获取AppStore上架后的应用版本号
  3. 什么是你的职涯“本钱”
  4. 【学习笔记】HTTPS概述
  5. 【转】如何使用应用日志(Application Log)
  6. 在alv list小计之后输出分割线
  7. ABAP数字类型合法性检查函数NUMERIC_CHECK
  8. SAP成本会计分录大全
  9. 39、Power Query-Text.Combine函数应用
  10. LSMW批导数据文件注意