linux搭建directx环境,微軟開始在WSL 2環境中的Linux支援DirectX
微軟在//build 2020大會(huì)上宣布,適用於Linux的Windows子系統(tǒng)WSL 2(Windows Subsystem for Linux 2)開(kāi)始支援GPU硬體加速,簡(jiǎn)單來(lái)說(shuō),微軟發(fā)布了一個(gè)虛擬GPU驅(qū)動(dòng)程式,將虛擬化的GPU暴露給Windows主機(jī)上,在虛擬機(jī)器中執(zhí)行的使用者模式應(yīng)用程式,而這樣可以讓W(xué)SL 2環(huán)境中的Linux虛擬機(jī)器,能夠和Windows主機(jī)共享GPU,實(shí)現(xiàn)GPU硬體加速。
WSL是一個(gè)可以在Windows上執(zhí)行Linux應(yīng)用程式的環(huán)境,因此當(dāng)開(kāi)發(fā)者要開(kāi)發(fā)在雲(yún)中部署的Linux容器應(yīng)用程式,則可以先在Windows上進(jìn)行本地開(kāi)發(fā)和測(cè)試,而為了要支援更廣泛的應(yīng)用,現(xiàn)在微軟讓Linux應(yīng)用程式和工具,也可以在WSL中獲得GPU加速。
微軟在過(guò)去一段時(shí)間,發(fā)展了客戶(hù)端GPU虛擬化技術(shù),而這項(xiàng)技術(shù)現(xiàn)在已經(jīng)整合到了Windows顯示驅(qū)動(dòng)程式模型(WDDM)中,所有WDDM v2.5以及更高版本的驅(qū)動(dòng)程式,都原生支援GPU虛擬化。微軟提到,這項(xiàng)技術(shù)被稱(chēng)為WDDM GPU半虛擬化(GPU Paravirtualization),已經(jīng)是Windows基礎(chǔ)的一部分,被用在Windows Defender、Application Guard、Windows Sandbox和Hololens 2模擬器等使用案例,不過(guò)目前這項(xiàng)技術(shù)還僅限於Windows訪客使用,像是在Windows中執(zhí)行的虛擬機(jī)器以及容器。
將GPU加速帶入WSL 2,是透過(guò)WDDM將GPU半虛擬化擴(kuò)展到Linux訪客,而這仰賴(lài)新的Linux核心驅(qū)動(dòng)程式實(shí)作,該驅(qū)動(dòng)程式利用半虛擬化協(xié)定將GPU暴露給用戶(hù)模式的Linux,GPU投射抽象遵循WDDM GPU抽象模型,並將針對(duì)該抽象所建構(gòu)的API和驅(qū)動(dòng)程式,移植到Linux環(huán)境中使用。
Dxgkrnl是一個(gè)全新的Linux核心驅(qū)動(dòng)程式,會(huì)將/dev/dxg裝置暴露給使用者模式Linux,微軟提到,當(dāng)主機(jī)上有多個(gè)GPU,則所有GPU都會(huì)提供給Linux環(huán)境使用,在Linux環(huán)境中執(zhí)行的應(yīng)用程式,其對(duì)GPU存取權(quán)限和在Windows上的主機(jī)應(yīng)用程式相同,Linux和Windows之間沒(méi)有資源分區(qū),也沒(méi)有對(duì)Linux應(yīng)用程式設(shè)下限制,資源共享是完全動(dòng)態(tài)的,取決於當(dāng)下哪個(gè)程式需要什麼資源。微軟強(qiáng)調(diào),共享GPU的兩個(gè)Windows應(yīng)用程式,和共享GPU的Linux和Windows應(yīng)用程式?jīng)]有差別,當(dāng)只有Linux應(yīng)用程式需要GPU,那該應(yīng)用程式將占用所有GPU資源。
由於要在Linux投射相容WDDM的抽象,因此微軟便重新編譯圖形API DirectX,使其可以在WSL環(huán)境中的Linux上運(yùn)作,微軟提到,這個(gè)是真正完整的D3D12 API,並非模擬或是重新實(shí)作,libd3d12.so是使用Windows上d3d12.dll相同的程式碼編譯而來(lái),在不考慮虛擬化造成的影響,其提供與Windows相同等級(jí)的功能和效能。唯一例外是Present(),D3D12 API目前可用於螢?zāi)煌怃秩竞瓦\(yùn)算,但尚未支援Swapchain將畫(huà)素直接複製到螢?zāi)簧稀?/p>
除此之外,微軟還移植了機(jī)器學(xué)習(xí)API DirectML,現(xiàn)在DirectML可在WSL中的Linux上運(yùn)作,因此開(kāi)發(fā)者將可以在Linux執(zhí)行高效能機(jī)器學(xué)習(xí)訓(xùn)練和預(yù)測(cè)功能。DirectML建立在D3D12 API之上,提供最佳化的機(jī)器學(xué)習(xí)工作負(fù)載運(yùn)算集合,為了簡(jiǎn)化開(kāi)發(fā)者使用DirectML的工作,微軟還發(fā)布整合DirectML後端的TensorFlow預(yù)覽套件,加速初學(xué)者上手。
而且WSL也將會(huì)支援Nvidia CUDA加速功能,CUDA是跨平臺(tái)API,可以藉由Windows上的WDDM GPU抽象,或Linux上的Nvidia GPU抽象和GPU溝通,微軟和Nvidia合作建置Linux的CUDA版本,該版本針對(duì)/dev/dxg暴露的WDDM抽象,微軟提到,這是libcuda.so的完整功能版本,可以用來(lái)加速cuDNN、cuBLAS、TensorRT等CUDA-X函式庫(kù)。
另外,WSL還支援Nvidia的Docker工具,讓原本在雲(yún)端中執(zhí)行的容器化GPU工作負(fù)載,也可以搬到WSL上執(zhí)行,微軟提到,他們不會(huì)在使用者電腦上預(yù)裝Nvidia Docker工具,而是跟目前一樣,讓用戶(hù)選擇安裝軟體套件包,只是新的軟體套件相容WSL並且提供硬體加速功能。
總結(jié)
以上是生活随笔為你收集整理的linux搭建directx环境,微軟開始在WSL 2環境中的Linux支援DirectX的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux 用户权限详解,03_04_L
- 下一篇: linux全自动安装光盘,CentOS7