我們在前面大致了解了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。
Intel更在2016年8月就公開展示動態遷移(Live Migration),比NVIDIA跟VMware合作的vMotion技術預覽,整整早了2年。有興趣的科科可看一下這段展示影片,蠻驚人的。
但這些年來,Intel的GPU虛擬化方案卻從未得到足夠的目光和重視,恐怕有聽過GVT這個名稱的科科也是寥寥可數,原因很簡單:Intel GPU的性能實在太弱了,弱到虛擬化技術再先進,都沒人想用。
假如你今天是雲端資料中心的服務業者,或是架設網路服務的IT人員,在寸土寸金的機房空間,你會願意塞入一大堆Intel的「內顯」?還是NVIDIA和AMD的高階獨顯?完全著毋庸議。只能繼續觀察Linux基金會的輕量級物聯網Hypervisor ACRN計畫,和Intel砍掉重練的Xe繪圖技術,能不能使其起死回生。
再來就是在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發威了。
扣除大家都做的到的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的整體使用效率。
所以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的生態系統養的如此巨大,你又能怎麼辦?開放封閉與否通通擺一旁,東西能夠實用好用才是真本事。
最後順便一題,NVIDIA新一代的Ampere架構,其MIG (Multi-Instance GPU) 技術將Graphic/Compute引擎數量變成前代的7倍(實際上是管理暫存器的GR Engine更好分配資源,不必整顆GPU做費時費力的Context Switch),不再像過去讓虛擬機透過分時多工存取這些引擎,所以對客戶來說,用AMD產品來打造雲端GPU的經濟效益,只會越來越低,而那個門檻還在不斷拉高中,AMD(和Intel)何時能夠在GPU虛擬化追上NVIDIA,光用想的就會讓人頭皮發麻。
礙於篇幅,GPU虛擬化的諸多議題,就留待日後有機會再與各位科科分享,相信各位科科現在頭上已經高掛著滿滿的問號。科科科科科。
4 則回應