Šok! Microsoft uvádí podporu Direct3D do Linuxu ve Windows. WSL už umí i GUI aplikace

Microsoft oznámil, že linuxové prostředí ve Windows 10 dostane podporu GUI okenních aplikací. A navíc na něj přinese i podporu GPU akceletace a Direct3D 12.

23

Tak se zdá, že tu máme jednu ze zpráv z kategorie „silničáře zaskočila zima v pekle“. Možná jste už někde viděli větu typu, že jedna z věcí, kterou Microsoft nikdy neudělá, je vydat Direct3D pro Linux, aby na něm fungovaly hry a podobně. A vidíte, udělal. Microsoft oznámil, že do Linuxu přidává nejen podporu Direct3D, ale také OpenCL, OpenGL a Cuda ve spolupráci s Nvidií.

Háček je samozřejmě v tom, že se to netýká klasických linuxových distribucí, v kterých Microsoft nemá prsty, ale pouze vrstvy Windows Subsystem for Linux. To je Linuxové prostředí, spouštěné nad operačním systémem Windows 10 a doposud atraktivní hlavně pro vývojáře/vývojářky pracující v příkazové řádce.

Teď ale Microsoft oznámil, že WSL dostane podporu přímo grafických GUI programů a s tím i GPU akceleraci a právě Direct3D. Množství linuxového softwaru, které bude možné používat, hodně vzroste, ale současně se tu otevírá prostor i pro porty her pro Windows. Není to tedy taková revoluce, jaká by mohla být, ale kdo ví… odpusťe tedy ironický výkřik v titulu.

Předchozí
Následující

Direct3D v Linuxu (pokud ho máte na Windows)

Dosud byly subsystémy WSL a WSL2 (jeho alternativa používající virtualizaci přes Hyper-V a reálné linuxové jádro) míněné pro běh aplikací a softwaru pro příkazovou řádku. Grafické aplikace oficiálně podporované nebyly, i když se s trochou snahy zprovoznit daly. Nově ale Microsoft do Linuxového prostředí přináší i virtualizaci GPU, které je pak možné používat v Linuxovém subsystému a s tímto přichází i podpora GUI aplikací.

Tuto schopnost dostane virtualizovaná verze WSL 2, nikoliv původní verze WSL. Stojí totiž na paravirtualizaci grafického hardwaru, pro což také vyžaduje ovladač podporující WDDMv2.9 (Windows Display Driver Model v2.9).

Ovladač dxgkrnl umožňuje v rámci WSL 2 použít API Direct3D a GPU akceleraci
Ovladač dxgkrnl umožňuje v rámci WSL 2 použít API Direct3D a GPU akceleraci

Microsoft zároveň vyvinul ovladač dxgkrnl pro Linuxové jádro, který zprostředkovává virtualizované GPU uživatelskému prostředí virtualizovaného Linuxu jako zařízení /dev/dxg. Tento ovladač vytváří vrstvu, která je velmi blízká nativnímu ovladači pro Direct3D ve Windows.

Paravirtualizace GPU a ovladač dxgkrnl tím dává aplikacím běžícím v linuxovém subsystému schopnost používat grafické API Direct3D, které bylo dosud ostře stráženou exkluzivitou systému Windows. Přesněji bude dostupné API Direct3D 12, starší verze zřejmě ne.

Zjednodušeně to zřejmě funguje tak, že pomocí tohoto ovladače se v hostovaném systému (Linuxu) de facto dá zprostředkovaně běžet nad grafickým ovladačem hostujícího systému (Windows). Toto je mimochodem odpověď na otázku, proč můžeme mít Direct3D 12 na Linuxu, ale nešlo to udělat na Windows 7, kterou si možná řada z vás položí: Protože pod tím Linuxem běží Windows 10, bez kterého to nejde, a pod Windows 7 ne.

Microsoft uvádí, že na takovém systému mají jak programy pod Linuxem, tak nativní pod Windows zcela rovnocenné možnosti využití GPU – to je sdílené a obě strany mohou dostat k dispozici všechny jeho prostředky, sdílení je dynamické podle potřeby. I výkon by měl být stejný, pokud se odmyslí určitá režie virtualizace. Pokud máte v počítači více GPU (a všechny mají ovladač WDDMv2.9), vidí je Linux všechny. Zařízení /dev/dxg se objeví automaticky, není potřeba instalovat žádné přídavné balíčky.

Podpora Direct3D 12 a DxCore ve Windows Subsystem for Linux 2
Podpora Direct3D 12 a DxCore ve Windows Subsystem for Linux 2

Knihovny pro Direct3D jsou ze stejného kódu jako na Windows

Ovladač dxgkrnl je implementovaný jako od základu nový a open source kód (GitHub), nevycházející ze zdrojového kódu pro Windows. Ovšem samotné API Direct3D nad tímto ovladačem bude implementovat jako uzavřená knihovna, což znamená, že ji nebude možné převzít do vrstev jako Wine a Proton a přidat tak podporu i na běžné linuxové distribuce běžící přímo na hardwaru. Microsoft toto řešení má napsané jen pro potřeby linuxového subsystému běžícího nad operačním systémem Windows (nepřekvapivě).

Knihovny libd3d12.so a libdxcore.so, které Direct3D 12 pod Linuxem poskytuje, jsou closed-source i z toho důvodu, že zde už to není žádná alternativní implementace. Jde přímo o tentýž čistokrevný software, který MS používá ve Windows, jen je překompilovaný, aby fungoval s ovladačem dxgkrnl na Linuxu.

DirectML ve Windows Subsystem for Linux 2
DirectML ve Windows Subsystem for Linux 2

Podpora GPU akcelerace pro AI (hlavní motivace?)

Microsoft také na linuxový subsystém naportoval DirectML (dříve WinML), což je vrstva pro aplikace strojového učení/umělé inteligence, také vybudovaná nad Direct3D. Tato technologie se tedy také bude dát využívat. Pokud platí, že Microsoft chce celým WSL/WSL 2 hlavně lákat vývojáře z nativních Linuxů na Windows, pak zde se asi míří na vývojáře AI aplikací.

Možná právě tento sektor pomohl Microsoft přesvědčit k implementaci GPU akcelerace. Podle tohoto mailu od vývojářů je vůbec i portace (respektive, zprostředkování) DirectX 12 v Linuxu celé motivované hlavně tím, že je to nejsnazší cesta, jak sdílet GPU současně mezi virtualizovaným WSL a nativními Windows. Normální virtualizace by totiž grafiku odňala hlavnímu OS, ale pokud je sdílená, mohou ji využívat obě vrstvy. Na to ale zřejmě Microsoft potřebuje, aby v obou vrstvách bylo použité totéž API, čili DirectX.

The plan is for Microsoft to provide shims to allow the existing Linux userspace interact with DX12; I’ll explain below why we had to pipe DX12 all the way into the Linux guest, but this is *not* to introduce DX12 into the Linux world as competition. There is no intent for anyone in the Linux world to start coding for the DX12 API.

(…)

There is a single usecase for this: WSL2 developer who wants to run machine learning on his GPU. The developer is working on his laptop, which is running Windows and that laptop has a single GPU that Windows is using.

Since the GPU is being used by Windows, we can’t assign it directly to the Linux guest, but instead we can use GPU Partitioning to give the guest access to the GPU. This means that the guest needs to be able to „speak“ DX12, which is why we pulled DX12 into Linux.

Podpora OpenGL a OpenCL ve Windows Subsystem for Linux 2
Podpora OpenGL a OpenCL ve Windows Subsystem for Linux 2 bude také postavená nad Direct3D 12

Bude i OpenGL, OpenCL a dokonce i Cuda

Ovšem nejen AI aplikace budou moci používat GPU. Nad touto podporou pro Direct3D plánuje Microsoft mít ještě překladové vrstvy, které zprovozní také API OpenGL a OpenCL v rámci Mesa. Ty pak budou moci využít všechny programy pro Linux, které s těmito rozhraními pracují. Microsoft zvažuje i wrapper přidávající nad Direct3D podporu Vulkanu, ale to asi ještě není hotové rozhodnutí.

Podpora Cuda ve Windows Subsystem for Linux 2
Podpora Cuda ve Windows Subsystem for Linux 2 bude zprostředkována, pokud máte patřičný jaderný ovladač Nvidie ve Windows

Zajímavé je, že v linuxovém subsystému dokonce bude dostupná i podpora výpočtů přes API Nvidia Cuda, které je proprietární věcí toto výrobce GPU. Toto je dílem spolupráce mezi Microsoftem a Nvidií. Bude dostupná plně funkční verze knihovny libcuda.so s akcelerací Cuda-X, cuDNN, cuBLAS a TensorRT. Také toto bude automaticky dostupné v Linuxu, pokud máte grafiku Nvidia s patřičným ovladačem s podporou WDDMv2.9.

Článek pokračuje na další straně informacemi o podpoře GUI aplikací ve WSL 2.

Předchozí
Následující

23 KOMENTÁŘE

    • No už mu vzdoruje takových 30 let 😀 Kolik má linux na desktopu 2-3 procenta ? Pamatuji si při prvním boomu linuxu někdy kolem nebo před rokem 2000 jak se říkalo, že za pár let bude linux na desktopech všude….
      To tady zas bude flame 😀
      Naše firma dělá outsourcing IT služeb pro velké společnosti a nikdo tu neřeší jestli linux nebo windows , nasazuje se oboje podle požadavků zákazníka nebo konkretního nasazení. Ale povětšinou linux=kritické servery oracle databáze atd… Windows primárně desktop, virtualizace jeho serverů…
      Hlavně pro spoustu firem je windows server nezastupitelný kvůli Active Directory , to je naprostý podnikový základ.
      MS pochopil , že nejlepší cesta bude v propojení s linuxem a je sakra dobře, že tu OS je. Ale že by byl samospasitelný tak to vidíme v praxi, že není.

      • Co se AD týká, Samba4 je poměrně robustní řešení, a ačkoli jí chybí ještě docela dost featur (replikace DFS např. – toto ale jde řešit na úrovni samotného Linuxu), tak funkční level na úrovni Win2003 je pro mnoho případů nasazení naprosto postačující. Navíc je to stavebnice, takže se můžeš rozhodnout, jaký použiješ DNS, jaký LDAP server, atd. Se Sambou jsem začínal na verzi 1.9 a za tu dobu ušla neskutečnou cestu.

        Nicméně, jak správně píše gogo, já psal o jádru Windows, a to poměrně nebezpečně linuxovatí. Že nad tím poběží Win32API (nebo RT) to je v podstatě fuk, to je otázka co komu vyhovuje, já s Windowsím desktopem problém nemám (ale to nemám v zásadě ani s tím Linuxovým, byť jej primárně nepoužívám).

      • Podíl linuxu v desktopu je tak malý, protože vůči windows se to na desktopu nedá pořádně používat. Teprve letos fedora dostala webový prohlížeč s podporou HW akcelerace, jinak se to muselo patchovata nebylo to v žádné distribuci oficiálně podporované. Kolik let máme retina displeje a krom čínského Deepinu není pro linux desktop, který by s hidpi monitory neměl problém a i ten deepin drhne. Nemluvě o tom, že chci k notebooku připojit displej s jiným rozlišením a jiným DPI… ve windows se monitor detekuje a nastaví se vše samo, na linuxu je to minimálně na pár minut práce, pokud to vůbec jde rozběhat. A můžeme pokračovat.

        • TCO zahrnuje mnoho různých nákladů. Cenou open source jsem myslel cenu za licenci k OS u nového zařízení jak ji popisuje MS (poslední věta):

          „We derive substantial revenue from licenses of Windows operating systems on personal computers. We face significant competition from competing platforms developed for new devices and form factors such as smartphones and tablet computers. These devices compete on multiple bases including price and the perceived utility of the device and its platform. Users are increasingly turning to these devices to perform functions that in the past were performed by personal computers. Even if many users view these devices as complementary to a personal computer, the prevalence of these devices may make it more difficult to attract application developers to our PC operating system platforms. Competing with operating systems licensed at low or no cost may decrease our PC operating system margins.“

          • Chápu, jenže pouze TCO ti souhrnně ukáže, kolik jsi za celé řešení doopravdy zaplatil.
            Jednoduchý příklad: pokud tě licence na windows stanici a server bude stát řekněme 6 tisíc za židli a náklady za administraci vyřeší jeden absolvent školy za 40 měsíčně, tak při pětiletém životním cyklu a 100 židlích platíš 600 + 2400 tisíc = 3 miliony. Naopak u čistě linuxového řešení budou třeba licence za nula, ale budeš muset proškolit userstvo (jednorázově 1000 za židli), ale hlavně budeš potřebovat 2 adminy, jednoho eléva za 40 a druhého seniora, který už přijde firmu na 80 tisíc. Pak se dopracuješ k cifře 100 + 2400 + 4800 = 7,3 mio. za pět let. A i když bude efektivita práce s Windows dvakrát lepší (tj. 200% linuxu), tak stále u Linuxu „přeplatíš“ 1,3mio.

            Výše uvedený příklad je samozřejmě příkladem, náklady na HW se např. mohou diametrálně lišit, ale cílem bylo ukázat, že cena za SW , a to ani přepočtená na produktivitu není objektivní ukazatel. MS samozřejmě chválí svůj ohon, jako to dělal po celou svou historii. Nicméně opravdu jediným validním měřítkem, které můžeš použít pro další srovnání, jestli se ti nasazení dané technologie vyplatí, je právě TCO (čili „kompletní nákladová stránka“ daného řešení).

            P.S.: mzdy počítám z pohledu zaměstnavatele, tj. i jeho odvody.

  1. Mtyslim, ze pre MS by bolo najlepsie prejst na Linux a pristup k svojim programom ponukat ako sluzbu. Uz teraz to robia s Office 365. Podporu pre Direct3D mozu prepojit s nejakym Windows Game Passom za predplatne ako to maju pre XBox. A dalsie sluzby ako Active Directory mozu taktiez ponukat za mesacne predplatne.

    Proste zakladny MS Linux bude zadarmo a pobezia na nom programy pre Linux a kto chce MS Office, DirectX hry, Active Directory, …, tak si za to kazdy mesiac zaplati.

  2. „atraktivní hlavně pro vývojáře/vývojářky“
    Na článku se podílel i pan Urban nebo to je jen trolení? 🙂

    MS na to jde chytře, ale stejně si myslím, že za nějaký čas dojdou k názoru, že samotný Windows OS jim nevynáší natolik, aby ospravedlnil vysoké investice do vývoje. MS sám v 10Q jako risk factor uvádí:
    „Competing with operating systems licensed at low or no cost may decrease our PC operating system margins.“

    Časem se v MS začnou poohlížet po možnosti jak dále snížit náklady na vývoj a pak dojdou k názoru, že jako základ použijí něco z „operating systems licensed at low or no cost“. Bude to podobný případ jako s Azure Sphere OS, jen pro desktopy.

    • WSL se používá například pro lokální vědecké výpočty. Umožňuje to dotyčným zůstat v prostředí Windows (s jeho dostupnými aplikacemi) a přitom provozovat aplikace jak je dnes standardem ve světe HPC (High-Performace Computing) tj. v prostředí Linuxu. Jelikož se GPGPU dnes využívá stále více, doplnění přístupu k API GPU z WSL je pro udržení v tomto segmentu prakticky nutností. Například při srovnání výkonu 16-core Threadripper 2nd Gen a GTX 1080Ti v operaci basecalling (převod naměřených dat sekvenátoru na báze DNA) je poměr výkonů 1:20.

      https://www.top500.org/statistics/details/osfam/1

  3. Líbí se mi, jak linuxová komunita jásá. Přitom podíl linuxu na desktopu za dobu existence desítek zpočátku vyrostl někam nad 2,3%, ale s integrací linuxového subsystému do Windows začal padat k 1,8%.

    Postupující integrace linuxu do Windows přináší možnost pracovat ve Windows i v linuxu současně – bez spouštění virtuálních strojů. A budou to umět Windows – linux vám tuto možnost nedá. Což pravděpodobně způsobí další pokles penetrace linuxu na desktopech. Názor, že Microsoft zahodí desítky let práce na Windows kvůli linuxu je sice zajímavý, ale moc bych tomu nevěřil, minimálně ne v následujících dvaceti letech. MS si nemůže dovolit zahodit kompatibilitu doslova milionů aplikací s jeho OS.

    Mimochodem, teď budou fajn dvanácti- a šestnáctijádra v PC… díky, AMD!

    • WSL2 ale JE virtuální stroj (na rozdíl od WSL1). MS může zahodit desítky let práce na Windows pokud zjistí, že se jim současný vývojový model (byznys plán) nevyplácí a v budoucnu bude situace ještě horší. Pak by byli hloupí, kdyby se nepřizpůsobili. A v historii můžeme najít mnoho SW produktů, které MS zahodil. I samotné Windows se v průběhu času mění a čistí od starých technologií.

    • já se rozhodně k „linuxové komunitě“ nepočítám -ačkoli Linux používám cca 25 let.
      Ale řekl bych, že spouštět Win32 aplikace na Linuxu jde už nějaký ten pátek (wine a spol.,) a to bez virtualizace.

      Problém je jiný: koukni se, kam MS v posledních letech napírá úsilí: vylepšují GUI, hrají si s RT API, ale jádro je poměrně nevyvíjeno. Ano, není to monolit jako Linux (který jde zase cestou částečné demonolitizace), takže spoustu věcí zvládneš pouhým přidáním driverů. Jenže…. i tento přístup má své velké vady na kráse, kdy se stávaš vazalem dodavatelů HW a kvality jejich ovladačů, plus máš problém s ad-hoc bootováním na neznámém HW. Linuxový server dokáže běhat několik let bez restartu, u Windows je to poměrně fikce (nejdále jsem to dotáhl na rok, pak se to začne drolit)

      P.S.: zrovna AMD a 12/16 jádra ukazují, jak zastaralé jádro (scheduler) windows mají. No ale aspoň se už naučily od linuxu spravovat paměť. 🙂

    • Na serverech je to zase obráceně – prostě na danou práci použít nejvhodnější nástroj atd. A pak je tady jeden ze sta, kterému to buď i tak vyhovuje víc naopak anebo ho baví hrát si s tím.

      Linux Torvalds je myslím už nějakou dobu spokojený:
      https://www.azquotes.com/quote/296067

      A Microsoft má spoustu zkušeností s vyráběním vrstev kompatibility + očividně už i programují multiplatformě, když ze stejných zdrojáků umí vyrobit libd3d12.so. Takže nějaký budoucí přechod na LInux kernel (aniž by se navenek uživatelům něco změnilo) mi nepřijde úplně nereálný, jen v blízké budoucnosti nepravděpodobný.

      • Taky si myslím, že Microsoftu je vcelku jedno za co dostane své peníze a pokud vyhodnotí, že náhrada HAL& za Linux-kernel jim přinese úsporu vývojových nákladu a přesto umožní zajistit poskytování a prodej API kompatibility pro svůj/cizí aplikační ekosystém tak proč ne.

        Pokud by snad hrozilo nebezpečí přílišné kompatibility alternativ (WINE/Proton/..) vždy je tu prostor pro právniky. Přijde mi, že Microsoft seznal, že OSS(Linux) nemůže porazit a tak se ho snaží využít ve svůj prospěch. Bilance příspěvků/profitu z nich je z jejich pohledu natolik dobrá, že jsme se dokonce dočkali uvolnění exFAT s čímž si ovšem dali hezky načas.