專利名稱:一種支持多gpu虛擬化的平臺架構(gòu)及其工作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種虛擬化環(huán)境中虛擬機(jī)以重定向方式利用多GPU加速計(jì)算的平臺架構(gòu)及其工作方法,屬于虛擬化技術(shù)領(lǐng)域。
背景技術(shù):
虛擬化是云計(jì)算的核心技術(shù)基礎(chǔ),它所帶來的成本節(jié)約、安全性增強(qiáng)等優(yōu)勢逐漸獲得了人們的認(rèn)可,是計(jì)算機(jī)科學(xué)領(lǐng)域的研究熱點(diǎn)。虛擬化技木通過對硬件資源的虛擬化,可以在一臺計(jì)算機(jī)上模擬多個相同的計(jì)算機(jī)硬件平臺,從而能夠同時運(yùn)行多個操作系統(tǒng)并實(shí)現(xiàn)相互隔離,提高了服務(wù)器的利用效率,在服務(wù)器合并、網(wǎng)絡(luò)安全、計(jì)算數(shù)據(jù)保護(hù)、高性能計(jì)算和可信等領(lǐng)域都有大量的應(yīng)用。近幾年,圖形處理單元(GPU)的性能和功能顯著增加。GPU的功能不再局限于圖 像處理,同時發(fā)展成為ー個有著高計(jì)算峰值和內(nèi)存帶寬的高度并行的處理器。隨著ー些支持GPGPU (通用圖形處理單元)計(jì)算的技術(shù)(例如CUDA)的推出,GPGPU的應(yīng)用也越來越廣泛。由于GPU的強(qiáng)大的并行計(jì)算能力,使得越來越多的高性能運(yùn)算中引入了 CPU+GPU的異構(gòu)模式。但是,一方面GPU的功耗較大,如果每個節(jié)點(diǎn)都配備GPU,則可能大大增加集群的功耗;一方面,GPU的并行計(jì)算能力強(qiáng)大,而在大部分運(yùn)算中,GPU作為協(xié)處理器,僅僅加速代碼中的并行部分,使得GPU的使用率不高;另一方面由于GPU的封閉性,虛擬機(jī)無法直接利用GPU來加速計(jì)算。這使得GPU在虛擬機(jī)方面的應(yīng)用受到了很大的限制。
發(fā)明內(nèi)容
摶術(shù)問是頁
為了解決虛擬化環(huán)境無法利用GPU加速的問題,本發(fā)明提出一種適用于集群的多GPU虛擬化平臺架構(gòu)及其工作方法,通過管理組件、客戶端組件、服務(wù)器端組件協(xié)同工作,使得虛擬機(jī)可以獲取GPU強(qiáng)大的并行計(jì)算能力,能夠?qū)崿F(xiàn)對GPU資源的獲取和細(xì)粒度的資源分配,并通過對GPU進(jìn)行負(fù)載均衡,提高GPU利用率,降低能耗。本發(fā)明實(shí)現(xiàn)了利用GPU對虛擬機(jī)處理能力的提升,虛擬機(jī)中的組件通過攔截應(yīng)用程序?qū)PU調(diào)用,并重定向至本機(jī)特權(quán)域或者遠(yuǎn)程GPU服務(wù)器,使得應(yīng)用程序的GPU調(diào)用在特權(quán)域或者遠(yuǎn)程GPU服務(wù)器之上執(zhí)行,并在執(zhí)行完成返回結(jié)果到虛擬機(jī)。技術(shù)方案
本發(fā)明為了解決上述技術(shù)問題采用如下技術(shù)方案
ー種支持多GPU虛擬化的平臺架構(gòu),包括GPU資源管理模塊、虛擬機(jī)客戶端模塊、GPU服務(wù)端模塊,GPU資源管理模塊部署在GPU資源管理節(jié)點(diǎn)上,虛擬機(jī)客戶端模塊部署在虛擬機(jī)客戶端上,GPU服務(wù)端模塊部署在GPU服務(wù)端上,GPU資源管理模塊負(fù)責(zé)GPU服務(wù)器的注冊以及對GPU資源請求的處理,虛擬機(jī)客戶端模塊和GPU服務(wù)端模塊進(jìn)行數(shù)據(jù)傳輸,虛擬機(jī)客戶端模塊與GPU服務(wù)端模塊進(jìn)行交互,虛擬機(jī)客戶端模塊攔截虛擬機(jī)對GPU的調(diào)用,并重定向至GPU服務(wù)端模塊,GPU服務(wù)端模塊則接受虛擬機(jī)客戶端模塊攔截的GPU調(diào)用信息,調(diào)用GPU執(zhí)行,并返回執(zhí)行結(jié)果。上述支持多GPU虛擬化的平臺架構(gòu)的工作方法包括如下步驟
步驟1,啟動GPU資源管理模塊,監(jiān)聽GPU服務(wù)端模塊的注冊請求以及虛擬機(jī)客戶端模塊的資源請求,并對注冊的GPU服務(wù)器維護(hù)ー張狀態(tài)表。步驟2,啟動GPU服務(wù)端模塊,向GPU資源管理模塊發(fā)送注冊請求。步驟3,GPU資源管理模塊接收注冊請求,建立ー張表,維護(hù)當(dāng)前GPU服務(wù)器的狀態(tài),完成后返回成功。步驟4,GPU服務(wù)端模塊接收到注冊成功的信息,立刻監(jiān)聽指定端ロ。步驟5,啟動虛擬機(jī)客戶端模塊,監(jiān)聽對GPU的調(diào)用。當(dāng)虛擬機(jī)出現(xiàn)GPU調(diào)用,則向GPU資源管理模塊發(fā)送資源請求。
步驟6,GPU資源管理模塊接收到資源請求,獲取已注冊GPU服務(wù)器的工作狀態(tài),根據(jù)一定算法,向虛擬機(jī)客戶端模塊分配最匹配的GPU服務(wù)器。步驟7,GPU資源管理模塊接收到分配的GPU服務(wù)器,并與該GPU服務(wù)器的GPU服務(wù)端模塊建立數(shù)據(jù)傳輸連接,虛擬機(jī)客戶端模塊將攔截的調(diào)用封裝,并通過數(shù)據(jù)傳輸連接發(fā)送至GPU服務(wù)端模塊。步驟8,GPU服務(wù)端模塊收到封裝的數(shù)據(jù),綜合每個GPU負(fù)載信息,為其選擇最匹配的GPU,執(zhí)行調(diào)用,并返回結(jié)果直至執(zhí)行結(jié)束。步驟9,虛擬機(jī)客戶端模塊接收到結(jié)果返回給應(yīng)用程序直至執(zhí)行結(jié)束。有益效果
本發(fā)明利用現(xiàn)有的虛擬化技術(shù),將GPU的并行處理能力引入虛擬機(jī),并結(jié)合管理機(jī)制,通過常用的socket、infiniband或者各虛擬化平臺專用的通信方式作為數(shù)據(jù)傳輸?shù)妮d體,不對現(xiàn)有虛擬化平臺進(jìn)行修改,只在原有平臺基礎(chǔ)上添加組件,使得虛擬機(jī)可以使用GPU來計(jì)算,適用于所有的虛擬化平臺。本發(fā)明易使用,使用者僅需要簡單的設(shè)置和配置,易移植,無須修改可以工作在各個虛擬化平臺之上;本發(fā)明設(shè)計(jì)定位為在虛擬化集群中,利用GTO協(xié)助提高虛擬化的處理能力,適合教師、學(xué)生等在教學(xué)過程需要使用GPU演示編程技術(shù)或者其他內(nèi)容,同時也適合在虛擬化集群中,提高虛擬機(jī)的處理能力,并且提高GPU的使用率。本發(fā)明使用場景廣泛,具有良好的實(shí)用性和可行性。
圖I為本發(fā)明功能模塊示意 圖2為本發(fā)明的傳輸程序流程 圖3為本發(fā)明的實(shí)時控制程序流程圖。
具體實(shí)施例方式以下結(jié)合
本發(fā)明具體實(shí)施方案
如圖I所示,本發(fā)明提供的支持多GPU虛擬化的平臺架構(gòu)包括GPU資源管理模塊、虛擬機(jī)客戶端模塊、GPU服務(wù)端模塊。GPU資源管理模塊部署在GPU資源管理節(jié)點(diǎn)上,虛擬機(jī)客戶端模塊部署在虛擬機(jī)客戶端上,GPU服務(wù)端模塊部署在GPU服務(wù)端(即GPU服務(wù)器)上。虛擬機(jī)客戶端與GPU服務(wù)端以及GPU資源管理模塊通過socket、inf iniband或者虛擬化平臺的專屬方式進(jìn)行通信。GPU資源管理模塊負(fù)責(zé)GPU服務(wù)器的注冊以及對GPU資源請求的處理,虛擬機(jī)客戶端模塊和GPU服務(wù)端模塊進(jìn)行數(shù)據(jù)傳輸,虛擬機(jī)客戶端模塊與GPU服務(wù)端模塊進(jìn)行交互,虛擬機(jī)客戶端模塊攔截虛擬機(jī)對GPU的調(diào)用,并重定向至GPU服務(wù)端模塊,GPU服務(wù)端模塊則接受虛擬機(jī)客戶端模塊攔截的GPU調(diào)用信息,調(diào)用GPU執(zhí)行,并返回執(zhí)行結(jié)果。GPU資源管理模塊對GPU服務(wù)器模塊以及虛擬機(jī)客戶端模塊的請求進(jìn)行處
理,響應(yīng)GPU服務(wù)器模塊的資源注冊,并實(shí)時監(jiān)控每個GPU服務(wù)器的負(fù)載,對每個GPU服務(wù)器的任務(wù)進(jìn)行調(diào)整,對每個GPU服務(wù)器的計(jì)算資源進(jìn)行管理,同時根據(jù)負(fù)載響應(yīng)虛擬機(jī)客戶端模塊的請求,并為其分配最匹配的GTO服務(wù)器。虛擬機(jī)客戶端模塊與GPU服務(wù)端模塊,通過socket或者infiniband或者各虛擬化平臺專用的通信方式進(jìn)行交互,通過攔截、重定向的方式,完成虛擬機(jī)的GPU加速。此外,GPU服務(wù)端模塊對GPU服務(wù)器中多個GPU進(jìn)行資源管理,每個GPU支持多個任務(wù)并行運(yùn)行,GPU服務(wù)端模塊統(tǒng)計(jì)每ー個GPU當(dāng)前任務(wù)負(fù)載,并根據(jù)當(dāng)前負(fù)載進(jìn)行GPU間的負(fù)載均衡。如圖2所示為GPU資源管理節(jié)點(diǎn)的工作流程圖。虛擬機(jī)客戶端模塊向GPU資源管 理模塊請求資源,GPU服務(wù)端模塊向GPU資源管理模塊注冊資源。GPU資源管理模塊對請求進(jìn)行解析,并根據(jù)當(dāng)前狀態(tài)進(jìn)行響應(yīng)。如圖3所示為虛擬機(jī)客戶端模塊與GPU服務(wù)端模塊交互的工作流程圖。計(jì)算工作主要由虛擬機(jī)客戶端模塊與GPU服務(wù)端模塊共同完成。在虛擬機(jī)客戶模塊與GPU服務(wù)端模塊建立連接后,雙方進(jìn)行數(shù)據(jù)收發(fā)傳輸。此時,虛擬機(jī)客戶端模塊攔截本機(jī)上運(yùn)行的應(yīng)用程序?qū)τ贕PU的調(diào)用,井向GPU服務(wù)端模塊發(fā)送數(shù)據(jù)。GPU服務(wù)端模塊接收虛擬機(jī)客戶端的數(shù)據(jù),并解析,選擇GPU井利用該GPU運(yùn)算得出結(jié)果,并返回執(zhí)行結(jié)果。虛擬機(jī)客戶端模塊接收數(shù)據(jù),并將執(zhí)行結(jié)果返回給應(yīng)用程序。GPU服務(wù)端模塊判斷用戶端發(fā)送的數(shù)據(jù)是否為停止傳輸命令。若不是,則重復(fù)上述過程;若是,則關(guān)閉此連接。支持多GPU虛擬化的平臺架構(gòu)的工作方法具體包括如下步驟
步驟1,啟動GPU資源管理模塊,監(jiān)聽GPU服務(wù)端模塊的注冊請求以及虛擬機(jī)客戶端模塊的資源請求,并對注冊的GPU服務(wù)器維護(hù)ー張狀態(tài)表。步驟2,啟動GPU服務(wù)端模塊,向GPU資源管理模塊發(fā)送注冊請求。步驟3,GPU資源管理模塊接收注冊請求,建立ー張表,維護(hù)當(dāng)前GPU服務(wù)器的狀態(tài),完成后返回成功。步驟4,GPU服務(wù)端模塊接收到注冊成功的信息,立刻監(jiān)聽指定端ロ。步驟5,啟動虛擬機(jī)客戶端模塊,監(jiān)聽對GPU的調(diào)用。當(dāng)虛擬機(jī)出現(xiàn)GPU調(diào)用,則向GPU資源管理模塊發(fā)送資源請求。步驟6,GPU資源管理模塊接收到資源請求,獲取已注冊GPU服務(wù)器的工作狀態(tài),根據(jù)一定算法,向虛擬機(jī)客戶端模塊分配最匹配的GPU服務(wù)器。步驟7,GPU資源管理模塊接收到分配的GPU服務(wù)器,并與該GPU服務(wù)器的GPU服務(wù)端模塊建立數(shù)據(jù)傳輸連接,虛擬機(jī)客戶端模塊將攔截的調(diào)用封裝,并通過數(shù)據(jù)傳輸連接發(fā)送至GPU服務(wù)端模塊。步驟8,GPU服務(wù)端模塊收到封裝的數(shù)據(jù),綜合每個GPU負(fù)載信息,為其選擇最匹配的GPU,執(zhí)行調(diào)用,并返回結(jié)果直至執(zhí)行結(jié)束。步驟9,虛擬機(jī)客戶端模塊接收到結(jié)果返回給應(yīng)用程序直至執(zhí)行結(jié)束。
權(quán)利要求
1.ー種支持多GPU虛擬化的平臺架構(gòu),其特征在于包括GPU資源管理模塊、虛擬機(jī)客戶端模塊、GPU服務(wù)端模塊,GPU資源管理模塊部署在GPU資源管理節(jié)點(diǎn)上,虛擬機(jī)客戶端模塊部署在虛擬機(jī)客戶端上,GPU服務(wù)端模塊部署在GPU服務(wù)端上,GPU資源管理模塊負(fù)責(zé)GPU服務(wù)器的注冊以及對GPU資源請求的處理,虛擬機(jī)客戶端模塊和GPU服務(wù)端模塊進(jìn)行數(shù)據(jù)傳輸,虛擬機(jī)客戶端模塊與GPU服務(wù)端模塊進(jìn)行交互,虛擬機(jī)客戶端模塊攔截虛擬機(jī)對GPU的調(diào)用,并重定向至GPU服務(wù)端模塊,GPU服務(wù)端模塊則接受虛擬機(jī)客戶端模塊攔截的GPU調(diào)用信息,調(diào)用GPU執(zhí)行,并返回執(zhí)行結(jié)果。
2.根據(jù)權(quán)利要求I所述的支持多GPU虛擬化的平臺架構(gòu),其特征在于所述GPU資源管理模塊對GPU服務(wù)端模塊以及虛擬機(jī)客戶端模塊的請求進(jìn)行處理,響應(yīng)GPU服務(wù)端模塊的資源注冊,并實(shí)時監(jiān)控每個GPU服務(wù)器的負(fù)載,對每個GPU服務(wù)器的任務(wù)進(jìn)行調(diào)整,對每個GPU服務(wù)器的計(jì)算資源進(jìn)行管理,同時根據(jù)負(fù)載響應(yīng)虛擬機(jī)客戶端模塊的請求,并為其分配最匹配的GPU服務(wù)器。
3.根據(jù)權(quán)利要求I所述的支持多GPU虛擬化的平臺架構(gòu),其特征在于所述虛擬機(jī)客戶端模塊與GPU服務(wù)端模塊通過socket或者inf iniband或者各虛擬化平臺專用的通信方式進(jìn)行交互,通過攔截、重定向的方式,完成虛擬機(jī)的GPU加速。
4.根據(jù)權(quán)利要求I所述的支持多GPU虛擬化的平臺架構(gòu),其特征在于所述GPU服務(wù)端模塊對GPU服務(wù)器中多個GPU進(jìn)行資源管理,每個GPU支持多個任務(wù)并行運(yùn)行,GPU服務(wù)端模塊統(tǒng)計(jì)每ー個GPU當(dāng)前任務(wù)負(fù)載,并根據(jù)當(dāng)前負(fù)載進(jìn)行GPU間的負(fù)載均衡。
5.權(quán)利要求I所述支持多GPU虛擬化的平臺架構(gòu)的工作方法,其特征在于包含如下步驟 步驟1,啟動GPU資源管理模塊,監(jiān)聽GPU服務(wù)端模塊的注冊請求以及虛擬機(jī)客戶端模塊的資源請求,并對注冊的GPU服務(wù)器維護(hù)ー張狀態(tài)表; 步驟2,啟動GPU服務(wù)端模塊,向GPU資源管理模塊發(fā)送注冊請求; 步驟3,GPU資源管理模塊接收注冊請求,建立ー張表,維護(hù)當(dāng)前GPU服務(wù)器的狀態(tài),完成后返回成功; 步驟4,GPU服務(wù)端模塊接收到注冊成功的信息,立刻監(jiān)聽指定端ロ ; 步驟5,啟動虛擬機(jī)客戶端模塊,監(jiān)聽對GPU的調(diào)用,當(dāng)虛擬機(jī)出現(xiàn)GPU調(diào)用,則向GPU資源管理模塊發(fā)送資源請求; 步驟6,GPU資源管理模塊接收到資源請求,獲取已注冊GPU服務(wù)器的工作狀態(tài),根據(jù)ー定算法,向虛擬機(jī)客戶端模塊分配最匹配的GPU服務(wù)器; 步驟7,GPU資源管理模塊接收到分配的GPU服務(wù)器,并與該GPU服務(wù)器的GPU服務(wù)端模塊建立數(shù)據(jù)傳輸連接,虛擬機(jī)客戶端模塊將攔截的調(diào)用封裝,并通過數(shù)據(jù)傳輸連接發(fā)送至GPU服務(wù)端模塊; 步驟8,GPU服務(wù)器端模塊收到封裝的數(shù)據(jù),綜合每個GPU負(fù)載信息,為其選擇最匹配的GPU,執(zhí)行調(diào)用,并返回結(jié)果直至執(zhí)行結(jié)束; 步驟9,虛擬機(jī)客戶端模塊接收到結(jié)果返回給應(yīng)用程序直至執(zhí)行結(jié)束。
全文摘要
本發(fā)明提供一種支持多GPU虛擬化的平臺架構(gòu)及其工作方法,該架構(gòu)通過在GPU服務(wù)器端和虛擬機(jī)端部署中間件,利用socket或者infiniband等方式作為傳輸媒介,填補(bǔ)了原有的虛擬機(jī)平臺不能利用GPU加速的缺點(diǎn)。該架構(gòu)通過一個或者多個集中控制的管理節(jié)點(diǎn)對GPU資源進(jìn)行管理,并對GPU資源進(jìn)行細(xì)粒度的劃分,能夠提供多任務(wù)并行任務(wù)的功能。虛擬機(jī)通過中間件向管理節(jié)點(diǎn)請求GPU資源,并利用GPU資源加速。GPU服務(wù)器通過中間件向管理節(jié)點(diǎn)注冊GPU資源,并利用GPU資源提供服務(wù)。本發(fā)明將GPU的并行處理能力引入虛擬機(jī),并結(jié)合管理機(jī)制,最大限度的提高GPU利用率。本架構(gòu)能夠有效的降低能耗,提高計(jì)算效率。
文檔編號G06F9/50GK102650950SQ201210102989
公開日2012年8月29日 申請日期2012年4月10日 優(yōu)先權(quán)日2012年4月10日
發(fā)明者呂相文, 袁家斌, 馬業(yè) 申請人:南京航空航天大學(xué)