Home People Research Blog Courses Links Search Download
NCHC

Blog

Blog 最新文章

  1. Visual Studio 的遠端偵錯:Windows
    2021/03/24 14:45
  2. Visual Studio 2019 16.9 支援使用 OpenMP LLVM
    2021/03/03 13:52
  3. Valve 推出完全支援 OpenXR 的 SteamVR 1.16.8
    2021/02/25 09:43

Blog 最新回應

  1. 加入斜體文字...
    2021/02/07 21:06
  2. 加入斜體文字...
    2021/02/07 21:06
  3. 加入斜體文字...
    2021/02/07 21:06

Keyword 關鍵字

Boost C++11 Python 3d print Pandas OpenVR HTC Vive ASUS Xtion C++14 OpenNI Windows MR OpenMP Kinect Oculus Rift S Python 資料視覺化 xml HTC Vive Pro Docker Vulkan svn C++14 開放資料 PHP Java OpenCL Docker HTC Vive Focus NiTE2 OpenCV Oculus Quest 2 C++20 C++ GitLab git OpenXR CUDA 3D立體 OpenNI2 Oculus Valve Index VR 開放資料 Qt javascript CubeX Pandas 資訊地圖 MR C++17 OpenGL VR HoloLens 2 WebGL iFlyover

類別:技術相關 » 新奇玩意
文章發表|我要回應|RSS訂閱

WSL2 未來的 GPU 支援

之前在《Windows Subsystem for Linux 2 + Docker》一文,大概介紹了微軟在 Windows 10 2004 推出的 WSL2 的功能,算是介紹了 WSL 已經可以用的功能(不過要切到 Windows Insider)。

而這篇,則是來簡單紀錄一下 WSL2 還在開發,以後才能用的功能了~

在 Heresy 來看,WSL2 已經讓 Heresy 在跨平台作業時,省了很多功夫了。
不過,以現在來看,他還缺少了一個很重要的功能,那就是實際硬體的存取;尤其是 GPU 的部分,基本上現行的 WSL1、WSL2 都是無能為力的。

但是,現在深度學習的東西,基本上大多是在 Linux 上開發、運作,Windows 雖然不是說不能跑,但是大多相對麻煩。也因此,如果可以透過 WSL2 來跑相關的套件,其實是會很方便的!

而微軟也知道這個狀況,所以也正在努力地將 GPU 的功能帶到 WSL 內。


在《DirectX ❤ Linux》一文中,微軟就說明了他們在這方面的發展、以及規劃。

首先,在 WDDM((Windows Display Driver Model) 2.5 開始(Windows 10 1809),就已經有支援 GPU 虛擬化的技術了~而微軟也已經把 WDDM 的 GPU-PV(GPU Paravirtualization)應用在 Sandbox 以及 HoloLens2 模擬器等應用上了。

而微軟目前也計畫將在 WDDM 2.9,將 GPU-PV 的功能擴展到 WSL2、讓 WSL 內的 Linux 環境也可以使用 GPU!不過這東西預計是 Windows 10 21H1 才會出來,所以應該是還得等個一整年了。

而他的設計概念,基本上是會在 Linux 的 user mode 中提供一個 /dev/dxg 的虛擬顯示卡,來提供 GPU 的功能。在 Linux kernel 中,則是提供了 drivers/gpu/dxgkrnl,來和 Windows 的 dxgkrnl 做對應、針對實體顯示卡做操作。

而在多 GPU 的系統上,也都會個別投影到 Linux 環境中,讓使用者使用。

之後呢,微軟則是提供了 libd3d12 和 libdxcore,讓使用者針對 dxg 這個虛擬顯卡做操作。

其中,libd3d12 號稱提供了真正、完整的 Direct3D 12 的 API(官方文件、微軟宣稱和 Windows 版是同一份原始碼)、並提供了同等級的功能與效能!
不過,這個 D3D12 API 並不沒有 swapchain 可以直接把內容顯示到螢幕上,所以基本上只能用來進行 offscreen 繪製、或是計算而已就是了。

不過,真的要在 WSL 下使用 D3D12,還需要有廠商提供的 user mode driver (UMD) 才行;這部分也是預期在 WDDMv2.9 的時候支援的。

而 libdxcore 則是簡化版的 dxgi、提供了和 Windows 上的 DxCore(官方文件)同樣的功能。

不過,這兩個函式庫微軟並沒有開放原始碼的打算,而是僅提供預先建置好的 binary,放在「/usr/lib/wsl/lib」讓使用者使用。

由於這部分應用主要應該會是計算、深度學習的應用,所以微軟也打算把 DirectML(官方文件)這個基於 Direct3D 的機器學習方案移植到 WSL2 內。

而進一步的,整個相關的 ML Framework 也都會移植到 WSL2 內,方便開發者來使用。


OpenCL、OpenGL、Vulkan

但是老實說,在 Linux 環境中,應該沒有人在用 Direct3D,真要用 Graphics API 基本上都是 Khronos 的 OpenGL 或 Vulkan 了(計算則是用 OpenCL)。

而讓人訝異的是,微軟似乎也有打算處理這一塊!?

目前看來,微軟應該是想透過 Mesa(官網)來提供一個「mapping layer」,將 OpenCL、OpenGL 對應到 Direct 3D 12;預計初期會支援 OpenCL 1.2 和 OpenGL 3.3,並不會是最新版本。

而 Vulkan 的部分,應該是有打算支援,不過目前應該還沒有明確的規劃。

在《In the works: OpenCL™ and OpenGL® mapping layers to DirectX》這篇文章,有稍微多一點的說明。


NVIDIA CUDA

不過要講到用 GPU 來計算,目前最大宗的,應該還是 NVIDIA CUDA(官網)了!

畢竟,目前主要的深度計算在 GPU 加速的部分,也幾乎都是靠 NVIDIA CUDA 來做 GPU 計算的(某些框架的確有透過 OpenCL 支援 AMD 的 GPU,但是印象中都…),如果 WSL2 的 GPU 支援不能支援 CUDA,感覺好像也就只有半吊子了?

所以,目前微軟也有在和 NVIDIA 合作,要把 CUDA 帶到 WSL 裡!

這邊的支援,也一樣是預計是透過 WDDMv2.9 來支援,讓 libcuda 可以透過 /dev/dxg 來操作實際的 GPU。而這邊的 libcuda.so 也會是完整版的功能,可以支援 CUDA-X 的所有函式庫。

同時,NVIDIA-docker 也將會可以在 WSL 中使用,所以要透過 Docker 來執行需要 CUDA 的東西,就會變得非常方便了!

目前在 NVIDIA 官網,也已經有一個《CUDA on Windows Subsystem for Linux - Public Preview》頁面了,不過目前應該還沒辦法試用就是了。


Linux GUI

此外,在《The Windows Subsystem for Linux BUILD 2020 Summary》一文中也有提到,微軟也有規劃要讓使用者可以在 WSL 中執行有圖形介面的 Linux 應用程式。

目前的初期展示,應該是透過 Windows 的 RDP 連接到 WSL 內的 wayland(GitLab)server 來完成的。

如此一來,要進行 Linux 環境下的開發、測試,就更簡單了~


個人對 WSL2 的這些新功能都還滿期待的!不過基本上,這些功能主要應該還是針對開發人員,而不是一般使用者就是了。

而要真的能用到這些功能,除非是打算切到 Windows 10 Insider 的測試版本,否則大概就只能等到明年的 Windows 10 21H1 了~


額外參考:

  • The Windows Subsystem for Linux BUILD 2020 Summary
  • 微軟開始在 WSL 2 環境中的 Linux 支援 DirectX
  • Microsoft 將 DriectX 帶到 Windows Subsystem for Linux,AI 應用直接獲益
張貼者:heresy於2020/05/26 15:59 下午有0則回應,瀏覽次數:359次

-- TOP --

我要回應
* 身份  訪客 (暱稱:)
 本篇文章作者 (帳號:密碼:)
* 內容      
很高興 悲傷 震驚 疑惑 大笑 發瘋 傷心
* 留言密碼 (請輸入下方圖片中去除前、後位數的數字,共五碼。)
說明 1. * 表示必填欄位。
2. 不支援HTML Tag。
   

-- TOP --

© Visualization and Interactive Media Laboratory of NCHC, 2007 - 2021, All Rights Reserved. Contact E-mail