硬科技:GPU虛擬化為何超級難搞(下)

2020.10.23 03:59PM

我們在前面大致了解了GPU虛擬化的困難度和幾種可能的手段,現在就來瞧瞧Intel、AMD和NVIDIA他們這幾年的作法。其實講的白一點,NVIDIA在2013年發表GRID K1產品線時,就註定了他們遙遙領先其他競爭者的局面,寫再多都令人感到多餘。

但在繪圖技術遠遠落後GPU雙雄的Intel,卻早在2011年就著手進行vGVT (Mediated Pass Through virtualization for GPU) 的概念驗證,在2013年的Haswell世代與Iris Pro內顯時,官方開始支援Xen Hypervisor的XenGT。

Intel隨即在2014年4月,將其GPU虛擬化技術正名為Intel GVT (Graphics Virtualization Technology),包含了GVT-d (Direct Pass-Through)、GTV-s (API Forwarding) 和最重要的GVT-g (Mediated Pass-Through),在當年年底支援虛擬機Hypervisor後起之秀KVM的KVMGT,並在2016年開源GVT-g。此時此刻,AMD還在悶著頭開發著運用SR-IOV的MxGPU。

照片中提到了Existing Arts vs Intel GVT-g、Legacy VGA、Emulation,跟英特爾有關,包含了事實概念程序原則程序、系統、事實、Sitecom WL 118無線網絡ADSL調製解調器路由器、Digicom Michelangelo WAVE-路由器無線-集成4端口集成-以太網,快速以太網,IEEE 802.11b,IEEE 802.11g

Intel更在2016年8月就公開展示動態遷移(Live Migration),比NVIDIA跟VMware合作的vMotion技術預覽,整整早了2年。有興趣的科科可看一下這段展示影片,蠻驚人的。

照片中提到了VGPU Live Migration、(intel)、Live Migration: Load balance, Maintenance, Fault recovery,跟英特爾、蕨類植物N花瓣有關,包含了圖、實時遷移、GPU虛擬化、管理程序

但這些年來,Intel的GPU虛擬化方案卻從未得到足夠的目光和重視,恐怕有聽過GVT這個名稱的科科也是寥寥可數,原因很簡單:Intel GPU的性能實在太弱了,弱到虛擬化技術再先進,都沒人想用。

假如你今天是雲端資料中心的服務業者,或是架設網路服務的IT人員,在寸土寸金的機房空間,你會願意塞入一大堆Intel的「內顯」?還是NVIDIA和AMD的高階獨顯?完全著毋庸議。只能繼續觀察Linux基金會的輕量級物聯網Hypervisor ACRN計畫,和Intel砍掉重練的Xe繪圖技術,能不能使其起死回生。

照片中提到了User VMs、Pre-launched、Post-launched RTVM,包含了乙太網路、管理程序、虛擬機、物聯網、嵌入式系統

再來就是在2016年2月發表FirePro S7150x2的AMD,其MxGPU奠基於PCI-SIG制定的SR-IOV標準,也是最早宣稱「全世界首款基於硬體的GPU虛擬化解決方案」。

為何AMD這麼堅持要引進「業界標準規格」是一個很有趣的問題,因為老對手NVIDIA早在2012年的Kepler架構,其VGX Hypervisor早已提供相對應的硬體機制。 畢竟從2011年到2016年,算是AMD歷史上最黑暗的時期,AMD很可能認知到內部研發資源不足以跟進競爭對手,所以引進外部規格來彌補,理論上較佳的安全性,也可能是AMD選擇SR-IOV的主因之一。

總之,最多單顆GPU能分配成16個虛擬機的MxGPU,還是有一定的市場接受度(起碼有Amazon AppStream和微軟Azure一起捧場),只是碰到那種使用者數量多(如數百人),但是單一用戶對於GPU的利用率並不高的應用場景(如教學或科研),AMD MxGPU就力有未逮,輪到市場老大NVIDIA發威了。

照片中提到了HOST VM、GUEST、GUEST,包含了sr iov gpu、單根輸入/輸出虛擬化、圖形處理單元、Advanced Micro Devices公司、虛擬化

扣除大家都做的到的Direct Pass-Through (Direct Path I/O),NVIDIA的vGPU架構比較近似裝置模擬(App→Guest OS→vGPU驅動程式→GPU MMU→VGX Hypervisor→GPU)。在虛擬機Hypervisor安裝GRID vGPU Manager,虛擬機中安裝vGPU驅動程式,通過分配GPU記憶體來控制GPU的計算資源使用量,如Volta架構的Tesla V100 SXM2 32GB,最多可切割成32個1GB記憶體的vGPU。

此外,不限於分割單一GPU,vGPU也支援將最多4顆實體GPU分配給單一虛擬機,有更大的應用彈性。但vGPU的資源配置是靜態的,除非重新設置虛擬機,否則一起動後就無法改變,不需要高運算效能的虛擬機,仍舊獨占固定的GPU資源,降低GPU的整體使用效率。

照片中提到了Нypervisor、Page Table、VM,跟超級城市有關,包含了GPU幀緩衝區、幀緩衝區、圖形處理單元、英偉達、英偉達GRID

所以VMware在2019年7月併購的Bitfusion,其「GPU共用解決方案」就成為這困境的解答。Bitfusion將GPU資源集中成遠端的運算儲存池,使用者透過網路遠端使用GPU資源,擁有更彈性的資源分配。也因此,網路基礎架構就變得舉足輕重,各位科科可以再回想一下NVIDIA願意灑70億美元併購Mellanox的理由。

天底下沒有白吃的午餐:VMware Bitfusion之所以能夠實現這豐功偉業,只因為它只是將CUDA API的調用需求,轉移到遠端的GPU運算池,各位科科有沒有突然想起上次提過的API Remoting了?理所當然的,想用到這麼好的功能,在VMware平台,你就得被NVIDIA綁死。

很多「開放規範信仰者(台灣科技精英不少這種人)」很不屑CUDA這種封閉規格,滿口不是OpenCL就是Intel那個OneAPI,但人家NVIDIA就有辦法把CUDA的生態系統養的如此巨大,你又能怎麼辦?開放封閉與否通通擺一旁,東西能夠實用好用才是真本事。

照片中提到了Remote CUDA via、Bitfusion、Remote CUDA via,包含了圖、的VMware、BitFusion.io Inc.、虛擬化、圖形處理單元

最後順便一題,NVIDIA新一代的Ampere架構,其MIG (Multi-Instance GPU) 技術將Graphic/Compute引擎數量變成前代的7倍(實際上是管理暫存器的GR Engine更好分配資源,不必整顆GPU做費時費力的Context Switch),不再像過去讓虛擬機透過分時多工存取這些引擎,所以對客戶來說,用AMD產品來打造雲端GPU的經濟效益,只會越來越低,而那個門檻還在不斷拉高中,AMD(和Intel)何時能夠在GPU虛擬化追上NVIDIA,光用想的就會讓人頭皮發麻。

礙於篇幅,GPU虛擬化的諸多議題,就留待日後有機會再與各位科科分享,相信各位科科現在頭上已經高掛著滿滿的問號。科科科科科。

資料來源

4 則回應

  • 以前電腦王的達人之路又回來了!
    2020-10-25
  • 我只想知道一篇不長的文章為何老是要分上下
    2020-10-25
  • 我覺得這種科普文不必扯一堆專有名詞,用簡單的話講每個技術背後的思維比較重要,GPU 虛擬化也不是只有廠商的規格可以討論,可以多分析一些最新論文喔
    2020-10-24
  • 其實寫那麼多都沒用(騙稿費),生死最後都決定在作業系統和程式,比如PS5可以自己搞一個標準,消費者願意買單就贏了
    2020-10-23