專利名稱:多gpu系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種計算機技術(shù)領(lǐng)域的方法,具體是一種多GPU(GraphiC Processing Unit,圖像處理單元)系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法。
背景技術(shù):
近年來,GPU得到了高速發(fā)展,它非常適合于高效率低成本地進行大規(guī)模高性能并 行數(shù)值計算。GPU是從CPU(中央處理器)衍生出來的一個概念,它是顯卡的關(guān)鍵部分,通 過獨占顯卡板載內(nèi)存或共享CPU內(nèi)存構(gòu)成一個子系統(tǒng),成為了 PC系統(tǒng)圖形處理性能的關(guān) 鍵。現(xiàn)代計算機中越來越多的圖形應(yīng)用使得GPU的地位顯得越來越重要,這種芯片在CPU 主宰PC性能走向幾十年后的近幾年中迅速崛起,在某些應(yīng)用中甚至達(dá)到了和CPU平起平坐 的地位。NVIDIA公司在1999年發(fā)布了 GeForce256顯卡時率先提出了 GPU的概念,該顯卡 減少了對CPU的依賴,并分擔(dān)CPU的部分工作,特別是在三維圖像處理時。GPU所采用的核 心技術(shù)有硬件T&L(Transform and Lighting,多邊形轉(zhuǎn)換與光源處理)、立方環(huán)境材質(zhì)貼圖 和定點混合、文理壓縮和凹凸映射貼圖、雙重紋理像素256位渲染引擎等,它們的出現(xiàn)極大 地提高了機器在圖形處理方面的性能。GPGPU(General-purpose computing on graphics processing units,通用GPU)是一種可以從事原本由中央處理器處理的通用計算任務(wù)的專 業(yè)圖形處理器。從完整的GPGPU定義來講,它不僅能夠進行圖形處理,而且能完成CPU的運 算工作,從而更加適合高性能計算,并支持更高級別的編程語言,在性能和通用性上更加強 大。從狹義的GPGPU應(yīng)用來說,GPGPU就是功能強化的GPU,GPU的優(yōu)勢自然也是GPGPU的優(yōu) 勢,它彌補了 CPU浮點運算能力的嚴(yán)重不足。和GPU相比,CPU最大的軟肋就是浮點運算能 力不足。無論是Intel的還是AMD的CPU產(chǎn)品,目前其浮點運算能力大多在幾十Gflops (每 秒十億次)以下,而GPU的浮點運算能力在2006年時就已經(jīng)數(shù)倍于主流處理器了。2010年NVIDIA公司發(fā)布的Tesla C2050有448個處理核心,存儲器帶寬達(dá) 到144GB/S,功耗為247W,雙精度浮點運算和單精度浮點運算更是達(dá)到了 515GflopS和 ITflops (每秒萬億次浮點運算),可以看出在浮點計算方面,GPU擁有CPU無法替代的高性 能。它能夠有效利用GPU強勁的處理能力和巨大的存儲器帶寬進行圖形渲染以外的計算, 廣泛應(yīng)用于圖像處理、視頻傳播、信號處理、人工智能、模式識別、金融分析、數(shù)值計算、石油 勘探、天文計算、流體力學(xué)、生物計算、分子動力學(xué)計算、數(shù)據(jù)庫管理、編碼加密等領(lǐng)域,并在 這些領(lǐng)域中CPU獲得了一到兩個數(shù)量級的加速比,取得了令人矚目的成績。然而即便GPGPU處理性能超過普通CPU —到兩個數(shù)量級,這對大型應(yīng)用系統(tǒng)來說, 還是很難滿足人們對高性能計算的要求。并行計算在一定程度上可以解決那些可以通過大 量并行計算來減少程序運行時間的問題。目前的并行系統(tǒng)主要通過分布式系統(tǒng)、計算機集 群、多核處理器、和GPU來實現(xiàn)。分布式系統(tǒng)和集群中主要使用MPI庫來開發(fā)程序;多核處理 器中主要使用OpenMP和Linux系統(tǒng)中POSIX來開發(fā)多線程程序;針對GPU的開發(fā)主要有微 軟的HLSL、0penGL的GLSL、斯坦福大學(xué)的RTSL,而在NVIDIA最新的“Fermi”GPU的創(chuàng)新架構(gòu) 上,開發(fā)人員應(yīng)用CUDA編程環(huán)境,在該環(huán)境中無論選擇C語言、C++、0penCL、DirectCompute還是選擇Fortran語言,都能夠?qū)崿F(xiàn)應(yīng)用程序的并行機制,同時開發(fā)人員可以使用NVIDIA Parallel Nsight工具。在單機方面,GPU使得普通桌面計算機成為個人超級計算機。例如 NVIDIA Tesla個人超級計算機,它以革命性的NVIDIA CUDA并行計算架構(gòu)為基礎(chǔ),擁有多達(dá) 960個并行處理核心,IT Flops浮點運算能力,相當(dāng)于一個數(shù)據(jù)中心集群系統(tǒng)所具有的運算 能力,從而更快更節(jié)能。根據(jù)CPU和GPU的不同特性,以運行操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)的CPU為核心,以處理 大規(guī)模并行計算的GPU為協(xié)處理器來是當(dāng)今的主流架構(gòu),多GPU系統(tǒng)也是滿足未來用戶高 性能需求的必然趨勢,這里多GPU系統(tǒng)指的是一個機箱內(nèi)的主板上有多個GPU。然而這里會 有一個技術(shù)上的問題,即雖然GPU的性能很好,但這對用戶編寫的程序有較高的要求,既要 符合不同的GPU架構(gòu)的編程模型,也要針對不同的GPU編寫出不同并行程度的程序。加州大學(xué)香檳分校Shane Ryoo, Christopher I. Rodrigues等人2008年在并行 領(lǐng)域頂級&議 PPoPP (Principles and Practice of Parallel Programming, ^ifIIefM 原貝1J禾口實踐)上發(fā)表的名為 “Optimization Principles and Application Performance Evaluation of a Multithreaded GPU Using CUDA”(使用 CUDA 的多線程 GPU 的優(yōu)化原則 和應(yīng)用性能評價)的文章中指出,在GeForce 8800GTX顯卡上,不同的應(yīng)用要達(dá)到同時有 3000多個線程并行執(zhí)行,才能隱藏內(nèi)存和顯存之間的帶寬瓶頸和GPU讀取全局顯存的時間 瓶頸。該GeFOrCe8800GTX顯卡共有16個流處理器,每個流處理器上有8個核,共有108個物 理內(nèi)核,而Tesla C2050顯卡上共有448個處理核心,耗電達(dá)到247W,如果要充分利用這些 內(nèi)核達(dá)到或接近它的理論峰值雙精度數(shù)515Gflops,要同時有3000個以上線程并行執(zhí)行才 可以。因此對于高端市場上出現(xiàn)的由多GPU主機組成的GPU集群,例如NVIDIA公司的Tesla S2050顯卡IU計算系統(tǒng),一塊主板上有四塊GPU,雙精度理論計算峰值達(dá)到2. 0TFL0PS,耗電 量達(dá)到900W,如何有效利用資源并達(dá)到節(jié)省能耗的目的,是GPU制造者和應(yīng)用開發(fā)人員最 關(guān)心的問題之一。現(xiàn)有基于多GPU系統(tǒng)的任務(wù)分配技術(shù)中主要有三家公司=NVIDIA英偉達(dá),AMD公司 和以色列的lucid公司。其中,英偉達(dá)公司采用的是SLI即Scalable Link Interface (擴 展鏈接界面)技術(shù),主要參考來源 http//www. slizone. com/page/slizone_learn. html 該技術(shù)只能用于同型號的顯卡間的互聯(lián);AMD公司采用的是CrossFire (交叉火力)技術(shù), 主要參考來源http://game. amd. com/us~en/crossfirex_about. aspx,該技術(shù)可應(yīng)用于 ATI不同系列的顯卡間的互聯(lián),這樣用戶在升級顯卡的同時可以不用放棄原來的顯卡,達(dá)到 不浪費資源的目的;Lucid公司主要采用HYDRA Engine技術(shù),HYDRA Engine就是GPU的仲 裁器,負(fù)責(zé)所有運算單元的任務(wù)分配工作,它的主要特征不僅可以使得同一品牌不同型號 的顯卡同時工作,而且可以同時運行不同品牌的顯卡,具有很強的兼容性,主要參考來源 http://www. lucid-tech. coiV。以上三種技術(shù)主要是從任務(wù)分配角度出發(fā),根據(jù)應(yīng)用程序 的負(fù)載,對資源進行快速計算,并精確分配資源,避免造成資源浪費。但是以上三種技術(shù)并 未考慮到如果計算資源大大超過計算需求的情況,例如可并行運算的線程有限,只需要一 塊或少數(shù)幾塊GPU就可以滿足計算要求,這樣會出現(xiàn)很多GPU計算單元空閑的情況,而造成 不必要的能量耗費。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的上述不足,提供一種多GPU系統(tǒng)中基于動態(tài)任 務(wù)遷移技術(shù)的降功耗方法。本發(fā)明通過遷移GPU上的任務(wù)到其它GPU上,而令原來GPU關(guān) 閉,從而能夠明顯提高GPU的利用率,達(dá)到節(jié)省功耗的有益效果。本發(fā)明是通過以下技術(shù)方案實現(xiàn)的,本發(fā)明包括以下步驟第一步,分別在每個GPU上設(shè)置一個GPU利用率監(jiān)視器來監(jiān)視GPU上所有的SP (流 處理單元)在時間T內(nèi)執(zhí)行運算的次數(shù)Ni,得到每個GPU在T時間內(nèi)的平均利用率μ = m/N2,其中N2是該GPU在T時間內(nèi)計算量的理論峰值。第二步,當(dāng)?shù)趇個GPU的利用率為Rl時,則將第i個GPU上的全部任務(wù)遷移到利 用率為R2的GPU上,執(zhí)行第三步;當(dāng)?shù)趈個GPU的利用率是100%時,將第j個GPU上的部 分任務(wù)遷移到利用率為R3的GPU上,執(zhí)行第四步。所述的Rl的取值范圍是0%彡Rl < 20%。所述的R2的取值范圍是25%彡R2 < 90%。所述的R3的取值范圍是25%彡R2 < 90%。所述的遷移,是GPUA上的寄存器和各級cache中的內(nèi)容更新到SP的片上內(nèi)存 中,GPUA中SP中的片上內(nèi)存內(nèi)容通過SLI連接器更新到GPU B中,GPU B直接訪問GPU A 的全局內(nèi)存,且系統(tǒng)中每個GPU的顯存以環(huán)形分布,從而將GPU A上的任務(wù)遷移到GPU B上。第三步,第i個GPU將新任務(wù)轉(zhuǎn)發(fā)給利用率為R2的GPU后,第i個GPU不再接收 新任務(wù)且第i個GPU的利用率為0,此時自動關(guān)閉第i個GPU,執(zhí)行第四步。第四步,當(dāng)所有正在運行的GPU的利用率都超過閾值R4且系統(tǒng)存在已關(guān)閉的GPU 時,系統(tǒng)自動啟動一塊已關(guān)閉的GPU,此時將新的計算任務(wù)分配給剛啟動的GPU。所述的閾值R4的取值是R4 < 90%。第五步,不斷重復(fù)上述步驟,直至所有的GPU都運行程序。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是1.具有實時資源利用率的監(jiān)視功能。本發(fā)明不需軟件干預(yù),而只要通過硬件來直 接對GPU的利用率進行監(jiān)視,具有很好的實效性,能及時完成對GPU的有效啟動和關(guān)閉。2.可以有效降低GPU的功耗,由于目前的很多應(yīng)用程序的并行度遠(yuǎn)未達(dá)到多GPU 系統(tǒng)可以提供的可支持上萬條線程并發(fā)執(zhí)行的能力,因此在很多應(yīng)用程序中,可以通過減 少GPU的空置時間,使其關(guān)閉達(dá)到節(jié)省能耗的目的,降低功耗的性能根據(jù)應(yīng)用程序不同的 并行度而不同,在4GPU系統(tǒng)中,最高可降低該多GPU系統(tǒng)75%的功耗。3.優(yōu)化GPU之間的通信,目前商用的多GPU系統(tǒng)中,GPU之間的通信主要是通過 PCI-Express或SLI連接器實現(xiàn),前者只能滿足普通應(yīng)用中GPU之間通信要求,而后者是 NVIDIA公司針對GeForce 6600GT及以后的升級版本的GPU,它使得GPU之間的通信速度的 理論峰值達(dá)到1GB/S。
圖1是實施例中監(jiān)視GPU利用率的系統(tǒng)結(jié)構(gòu)圖;圖2是實施例中任務(wù)遷移示意圖。
具體實施例方式以下結(jié)合附圖對本發(fā)明的方法進一步描述本實施例在以本發(fā)明技術(shù)方案為前提 下進行實施,給出了詳細(xì)的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述 的實施例。實施例本實施例中系統(tǒng)以英偉達(dá)公司代號為“Fermi”架構(gòu)的Tesla S2050 1U計算系統(tǒng), 該系統(tǒng)有4個GPU,每個GPU最高可實現(xiàn)515 Gigaflop (每秒十億次浮點運算)雙精度峰值 性能,從而在1U空間內(nèi)即可實現(xiàn)2 Teraflops的雙精度性能,900W熱設(shè)計功耗。具體降功 耗包括以下步驟第一步,分別在每個GPU上設(shè)置一個GPU利用率監(jiān)視器來監(jiān)視GPU上所有的SP在時 間T內(nèi)執(zhí)行雙精度浮點運算的次數(shù)m,得到每個GPU在T時間內(nèi)的平均利用率i! = N1/N2.本實施例中m為在時間T內(nèi)執(zhí)行雙精度浮點運算的次數(shù),N2是每個GPU在T時 間內(nèi)計算量的理論峰值5. 15億雙精度浮點運算數(shù)量,T為1微秒。 本實施例中每個GPU有m個SP,每個SP有n個處理單元,程序運行時會以SP為 單位來執(zhí)行SIMD(單指令多數(shù)據(jù))操作,因此在每個SP中使用專門的寄存器來記錄SP的 每微秒執(zhí)行運算次數(shù)為Si,具體為每當(dāng)PM的控制單元在向ALU(計算邏輯單元)發(fā)送數(shù) 據(jù)的同時會由一個寄存器專門來保存本條指令將要發(fā)給ALU的計算量,根據(jù)顯卡的頻率可 以累加計算出1微妙內(nèi)每個SP的運算量Si,然后m個不同SP的計算量相加,可以得出本 GPU的計算量,然后與GPU的理論峰值1微妙的計算量相比,可以得出本微妙內(nèi)GPU的利用 率Ri,如圖1所示。第二步,當(dāng)?shù)趇個GPU的利用率為R1時,則將第i個GPU上的全部任務(wù)遷移到利 用率為R2的GPU上,執(zhí)行第三步;當(dāng)?shù)趈個GPU的利用率是100%時,將第j個GPU上的部 分任務(wù)遷移到利用率為R3的GPU上,執(zhí)行第四步。本實施例中使用的是共享全局顯存技術(shù),當(dāng)GPU間沒有任務(wù)遷移時,每個GPU使用 指定內(nèi)存;當(dāng)GPU間有任務(wù)遷移時,如當(dāng)顯卡A上的任務(wù)需要遷移到顯卡B時,首先由顯卡 A上的寄存器和各級cache中的內(nèi)容更新到SP中的片上內(nèi)存中,顯卡A中SP中的片上內(nèi)存 內(nèi)容通過SLI連接器更新到顯卡B中,而顯卡B可以直接訪問顯卡A的全局內(nèi)存,這樣有效 地減少了數(shù)據(jù)傳輸量,同時為了較少訪問其它顯存中的數(shù)據(jù)時的延時訪問,幾塊GPU的顯 存以環(huán)形分布,如圖2所示。本實施例中R1小于20%,R2位于25%到75%之間,R3位于25%到75%之間。第三步,第i個GPU將新任務(wù)轉(zhuǎn)發(fā)給利用率為R2的GPU后,第i個GPU不再接收 新任務(wù)且第i個GPU的利用率為0,此時自動關(guān)閉第i個GPU,執(zhí)行第四步。第四步,當(dāng)所有正在運行的GPU的利用率都超過閾值R4且系統(tǒng)存在已關(guān)閉的GPU 時,則自動啟動一塊已關(guān)閉的GPU,且將新到的任務(wù)分配給剛啟動的顯卡直到該顯卡的利用 率達(dá)到R5以上。本實施例中R4是90%,R5是30%。第五步,不斷重復(fù)上述步驟,直至所有的GPU都運行程序。本實施例利用該4GPU的顯卡來計算基于量子化學(xué)的蛋白質(zhì)分子場,所采用的空 間計算分辨率均為256X 256X 256,計算3類蛋白質(zhì)分子場計算的可視化結(jié)果1A30,1GCV
6和1DPS。其中,1A30為HIV-1蛋白酶,含有201個氨基酸殘基,構(gòu)象是由1個小阻抗劑和2 條各含99個氨基酸的多肽鏈形成的C2對稱的均二聚體,每個單體中包含有2個模體,都由 反平行的0折疊組成;1GCV是一種血紅蛋白,含有552個氨基酸殘基;1DPS為DPS蛋白質(zhì), 含有1855個氨基酸殘基,它的每一個單體同鐵蛋白的折疊情況大致相似,其三重對稱軸上 具有小孔,中心具空腔,該空腔是鐵離子結(jié)合和釋放的重要活性區(qū)域。由于三種蛋白質(zhì)的復(fù)雜程度不同,在計算其分子場時的運算量也不相同。其中 1A30蛋白質(zhì)分子結(jié)構(gòu)相對簡單計算量最少,其并行度也是最小的;1DPS蛋白質(zhì)分子結(jié)構(gòu) 最為復(fù)雜,進行該分子場時的并行線程也最多,能夠比較充分利用GPU計算資源。本實施 例中,只有當(dāng)每個GPU中在不同時刻有10000個以上的并行線程時,4個GPU的利用率才 能達(dá)到90%以上,而在模擬蛋白質(zhì)分子場時,并行線程數(shù)量在很多情況下達(dá)不到10000,這 樣通過關(guān)閉GPU達(dá)到節(jié)省能耗的目的。在計算1A30蛋白質(zhì)分子場時,設(shè)每個GPU的耗電 量為單位1,總共運算時間為4,那么傳統(tǒng)方法利用GPU時需要的耗電量為1*4*4 = 16,而 用本實施例提出的任務(wù)遷移技術(shù)時,同時利用4個GPU的時間為0. 5,利用3個GPU時間 為1.5,利用2個GPU時間為1.5,利用1個GPU時間為1,總的計算時間為4. 5,耗電量為 4*0. 5+3*1. 5+2*1. 5+1 = 10. 5,預(yù)算速度相對慢了 0. 5/4 = 12. 5%,節(jié)省能耗為 5. 5/16 = 34.4%。在計算1DPS蛋白質(zhì)分子場時,設(shè)每個GPU的耗電量為單位1,總共運算時間為15, 那么傳統(tǒng)方法利用GPU時需要的耗電量為1*4*15 = 60,而用本實施例提出的任務(wù)遷移技 術(shù)時,同時利用4個GPU的時間為5,利用3個GPU時間為6,利用2個GPU時間為4,利用1 個GPU時間為2,總的計算時間為17,耗電量為4*6+3*6+2*4+1*2 = 50,預(yù)算速度相對慢了 2/17 = 11. 8%,節(jié)省能耗為 10/60 = 16. 7%0由此可見,本實施例提出的這種基于多GPU系統(tǒng)的任務(wù)動態(tài)遷移技術(shù)在保證不對 性能產(chǎn)生較大影響的前提下,達(dá)到節(jié)省功耗的目的。
權(quán)利要求
一種多GPU系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法,其特征在于,包括以下步驟第一步,分別在每個GPU上設(shè)置一個GPU利用率監(jiān)視器來監(jiān)視GPU上所有的SP在時間T內(nèi)執(zhí)行運算的次數(shù)N1,得到每個GPU在T時間內(nèi)的平均利用率μ=N1/N2,其中N2是該GPU在T時間內(nèi)計算量的理論峰值;第二步,當(dāng)?shù)趇個GPU的利用率為R1時,則將第i個GPU上的全部任務(wù)遷移到利用率為R2的GPU上,執(zhí)行第三步;當(dāng)?shù)趈個GPU的利用率是100%時,將第j個GPU上的部分任務(wù)遷移到利用率為R3的GPU上,執(zhí)行第四步;第三步,第i個GPU將新任務(wù)轉(zhuǎn)發(fā)給利用率為R2的GPU后,第i個GPU不再接收新任務(wù)且第i個GPU的利用率為0,此時自動關(guān)閉第i個GPU,執(zhí)行第四步;第四步,當(dāng)所有正在運行的GPU的利用率都超過閾值R4且系統(tǒng)存在已關(guān)閉的GPU時,系統(tǒng)自動啟動一塊已關(guān)閉的GPU,此時將新的計算任務(wù)分配給剛啟動的GPU;第五步,不斷重復(fù)上述步驟,直至所有的GPU都運行程序。
2.根據(jù)權(quán)利要求1所述的多GPU系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法,其特征 是,所述的Rl的取值范圍是Rl < 20%。
3.根據(jù)權(quán)利要求1所述的多GPU系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法,其特征 是,所述的R2的取值范圍是R2 < 90%。
4.根據(jù)權(quán)利要求1所述的多GPU系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法,其特征 是,所述的R3的取值范圍是R2 < 90%。
5.根據(jù)權(quán)利要求1所述的多GPU系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法,其特征 是,所述的遷移,是GPU A上的寄存器和各級cache中的內(nèi)容更新到SP的片上內(nèi)存中,GPU A中SP中的片上內(nèi)存內(nèi)容通過SLI連接器更新到GPU B中,GPU B直接訪問GPU A的全局 內(nèi)存,且系統(tǒng)中每個GPU的顯存以環(huán)形分布,從而將GPU A上的任務(wù)遷移到GPU B上。
6.根據(jù)權(quán)利要求1所述的多GPU系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法,其特征 是,所述的閾值R4的取值是R4 < 90%。
全文摘要
一種計算機技術(shù)領(lǐng)域的多GPU系統(tǒng)中基于動態(tài)任務(wù)遷移技術(shù)的降功耗方法,包括以下步驟分別在每個GPU上設(shè)置一個GPU利用率監(jiān)視器得到每個GPU在T時間內(nèi)的平均利用率;當(dāng)?shù)趇個GPU的利用率為R1時,則將第i個GPU上的全部任務(wù)遷移到利用率為R2的GPU上,且關(guān)閉該GPU;當(dāng)?shù)趈個GPU的利用率是100%時,將第j個GPU上的部分任務(wù)遷移到利用率為R3的GPU上,當(dāng)所有正在運行的GPU的利用率都超過閾值R4且系統(tǒng)存在已關(guān)閉的GPU時,系統(tǒng)自動啟動一塊已關(guān)閉的GPU,此時將新的計算任務(wù)分配給剛啟動的GPU;不斷重復(fù)上述步驟,直至所有的GPU都運行程序。本發(fā)明具有實時資源利用率的監(jiān)視功能;可以有效降低GPU的功耗;優(yōu)化GPU之間的通信。
文檔編號G06F9/50GK101901042SQ201010264120
公開日2010年12月1日 申請日期2010年8月27日 優(yōu)先權(quán)日2010年8月27日
發(fā)明者周憬宇, 曹朋, 朱寅, 沈耀, 過敏意, 鄭龍, 馬曦 申請人:上海交通大學(xué)