摘要: GPU深度好文系列,阿里雲技術專家分享html
第一章 GPU虛擬化發展史linux
GPU的虛擬化發展歷程事實上與公有云市場和雲計算應用場景的普及息息相關。若是在10年前談起雲計算,大部分人的反應是「不知所云「。可是隨着雲計算場景的普及,概念的深刻人心,慢慢地你們都對雲計算有一個較清晰的概念和實例化的理解。天然,隨着應用場景從單一依賴CPU的計算單元的應用擴展到多種體系架構,異構計算場景的應用上來後,對GPU,FPGA,TPU等專業計算芯片也提出了虛擬化和上雲的強烈要求。尤爲是最近幾年機器學習、深度學習等領域的快速發展,催生了異構計算場景搬遷上雲的高潮。架構
那麼這個異構計算應用場景的市場規模有多大呢?異構計算做爲機器學習人工智能的計算載體,先來看看人工智能前景如何?(引用出處:https://bg.qianzhan.com/report/detail/459/180116-3c060b52.html)框架
圖一:2015-2018年全球人工智能市場規模及預測(單位:億元,%)ssh
圖二: 2014-2018年中國人工智能產業市場規模及增速(單位:億元,%)機器學習
因此咱們不難理解,爲何各大雲計算廠商不管大小,都會極力研發異構計算產品,爭搶市場的主導地位。佈局
因爲GPU是異構計算的主力軍,讓咱們來回顧一下GPU虛擬化的發展歷史,並對各個GPU廠商作一個橫向比較,你們就不難看出來,哪些廠商處於領導地位,哪些是醬油黨 :)學習
2008年:序言阿里雲
VMware的GPU全虛擬化VSGA技術是第一次對GPU共享虛擬化的嘗試,於2008年末在VMware商業化的Workstation 6.5和Fusion 2.0版本中首度問世,後續又在面向數據中心的產品vSphere中有集成。但這是一個VMware專有的閉源解決方案,在開源社區和VMware以外的產品中沒有見到大規模應用,不是本篇關注的重點。雲計算
2012年:開始
隨着kernel VFIO模塊的引入和直通設備的慢慢普及,GPU的虛擬化之路得以開啓。而開始大規模運用,則大致是伴隨着VFIO模塊的成功落地。事實上,在2012年左右,GPU直通技術一直是VFIO模塊的一個重要應用場景。
2013年:第一個產品與羣雄逐鹿
Nvidia 在2013 發佈了GRID K1的產品,則標誌着GPU虛擬化的成熟並逐漸開啓了異構計算虛擬化的快速發展歷程。
而事實上在2013同年,Intel OTC 針對HSW的GVT-d 和GVT-g的GPU虛擬化方案的也已經開發了一年有餘。當初硬件基於SNB/HSW,而原型代碼是基於Xen Hypervisor。(題外話:回頭來看,會發現當初如日中天的Xen,居然在幾年後被後起之秀KVM逐漸取代。而當今公有云市場已鮮有Xen的身影了,替Citrix心疼幾秒)。
Intel對GPU行業發展保持着敏銳的技術洞察力,早在2011年便已經開始了GPU虛擬化的提案,然而因爲沒有引發足夠的重視,直到三年後的2014年,纔有基於GVT-g的XenClient產品問世。
同年: VFIO 模塊的社區維護者在KVM Forum上也正式發佈了VGA的assignment。(詳見:https://www.linux-kvm.org/images/e/ed/Kvm-forum-2013-VFIO-VGA.pdf)
同年初: AMD 也已經開始基於SRIOV的GPU虛擬化方案(Tonga架構),並開始研發SRIOV PF的GIM驅動和vGPU調度系統。由此推測SRIOV的硬件實現應該提早半年左右已經完成。直到兩年後,AMD終於迎來了首款GPU SRIOV的產品:FirePro S7150 (2016年初發布)。
Nvidia做爲GPU行業的龍頭老大,基本上在GPU虛擬化的研發和產品化是領先了各位對手1-2年以上。而做爲競爭對手的AMD在以後奮起直追。而Intel 基本上在那個時期還屬於陪跑者。
2014年:vGPU 分片虛擬化誕生
一年後,也就是2014年,隨着一篇Usenix ATC的論文的發表:」A Full GPU Virtualization Solution with Mediated Pass-Through「 默默無聞的GPU虛擬化的一個新技術正式進入了你們的視眼:GPU分片虛擬化(中文暫且這麼叫吧,由於mediated passh-through的叫法根本就不能讓人明白這個究竟是什麼)。
該論文由Intel OTC的兩位Principal Engineer發表,也表明了Intel在GPU虛擬化領域的技術積累(產品化一直不見轉機,提及來都是淚)。
應該說Nvidia做爲行業龍頭對分片虛擬化在社區的推進起到相當重要的角色,事實上VFIO的mdev框架是由Nvidia爲了GRID vGPU 產品線而引入。mdev的概念由Nvidia率先提出的,併合併到了Linux 內核4.10。人家玩閉源生態系統也開始擁抱開源。
而AMD 2014 則沒有消息,應該是繼續研發全球首款基於SRIOV的GPU方案。
2015年:分化
Intel 與Citrix的合做,前後發佈了基於GVT-d和分片虛擬化的GVT-g的XenClient 和 XenServer的產品。這些產品表明着當時Xen社區GPU虛擬化業界的標杆。爲何是Xen社區呢? 由於GVT-g當時尚未發佈KVM 版本。
Intel 也開始在各大內外會議推送GVT-g的技術,固然是但願本身技術能夠產品化並有一個好的市場前景。好比在當年「英特爾開發者大會」(IDF)上率先發布了基於GVT-g的多媒體視頻處理雲端方案。聽的人不少一百多號人,而且感興趣的也很多。做爲一個利用免費GPU來作音視頻處理,比單獨用E5 Server要划算的多。可是遺憾的是最終沒有任何產品落地。究其緣由仍是內在Intel GPU的定位問題。後續會講到Intel GVT-g 方案的致命傷和痛點。
而AMD繼續研發全球首款SRIOV GPU。
當其餘人都在玩技術的時候,Nvidia已經開始了產業佈局。同年發佈了AWS上和VMware合做的基於GRID的各類方案,好比很是炫酷的Game Streaming。
其實GRID 是大概念。表明了Nvidia的GPU虛擬化的一大摞產品。而其中的GRID vGPU即是基於mdev的分片虛擬化方案。
2016,2017年:回報
2016年AMD帶來了全球首款GPU的SRIOV顯卡FirePro S7150x2。而這款針對圖形渲染應用的產品也成爲了以後各大公有云廠商的必推業務。圖形渲染虛擬化高性價比只此一款。
Intel繼續在各大論壇極力宣傳Intel GVT-g技術。並在技術上第一次領先行業龍頭Nvidia率先實現了vGPU的熱遷移技術,能夠說Intel OTC的虛擬化部門在本身力所能及的狀況下把GVT-g作到了極致,然而在產品化的道路上卻越走越艱難。
Nvidia此時憑藉着AI的風口一路狂奔,日益完善GRID技術和分片虛擬化,把對手遠遠的拋在了後面。此時Nvidia也開始在開源社區拋頭露面。並在2016年的KVM Forum的次日,Nvidia架構師Neo隆重介紹了GRID vGPU技術。而恰巧本人做爲GVT-g技術的表明在同一會場作GPU Live Migration的主題介紹。
你們感覺一下當時的場景:GRID vGPU聽衆與GVT-g的聽衆對比:
不得不說,早年Intel做爲核顯GPU的表明與Nvidia做爲獨立顯卡的表明在GPU研發上有深度合做。而隨後與AMD的合做開發CPU+GPU的芯片。以及最近的Intel與AMD合做對抗Nvidia在GPU領域的擠壓。
以上三位既是對手又是朋友。
2018年:新領域
Nvidia繼續保持着行業第一的身份把持了絕大部分市場份額。誰讓人家有遠見早早佈局早早收割。
AMD 也有後續產品的發佈。好比針對老對手Nvidia的對標Deep Learning的MI25的發佈等。
隨着GPU虛擬化應用的普及,GPU虛擬化的應用場景再也不限於雲計算市場。各類新興行業也開始應用GPU虛擬化技術。最直接的即是車載娛樂系統,簡稱IVI(In-vehicle Information system )。因而三位老朋友又是老對手,都開始在IVI和自動駕駛領域開始競爭。而這也爲Intel GVT-g的技術落地帶來了起色。因而Intel率先發布了基於物聯網的虛擬化方案(ACRN),並夾帶着GVT-g的分片虛擬化技術浩浩蕩蕩地再次出發。
閱讀更多幹貨好文,請關注掃描如下二維碼: