英偉達(dá)測(cè)試Tesla K20 GPU協(xié)處理器
譯文早在今年5月英偉達(dá)透露其高端GK110圖形芯片的一部分新功能時(shí),這家公司聲稱,這款GPU即圖形處理器的兩項(xiàng)新功能:Hyper-Q和動(dòng)態(tài)并行處理(Dynamic Parallelism)有望幫助GPU更高效地運(yùn)行,而CPU即處理器不會(huì)一直干預(yù)。如今英偉達(dá)在逐步透露用于服務(wù)器的特斯拉(Tesla)K20 GPU協(xié)處理器的一些基準(zhǔn)測(cè)試結(jié)果,GK110預(yù)計(jì)會(huì)在今年晚些時(shí)候交付。
GK110 GPU芯片有時(shí)稱為Kepler2,絕對(duì)是功能超強(qiáng)的怪獸:芯片代工廠臺(tái)積電公司(TSMC)采用了非常熱門的28納米工藝,在一塊晶片上蝕刻了超過71億個(gè)晶體管。它采用了15個(gè)極致流式多處理器(SMX)處理單元,每個(gè)單元又有192個(gè)單精度CUDA(計(jì)算統(tǒng)一設(shè)備架構(gòu))核心,為每三個(gè)一組的CUDA核心添加了64個(gè)雙精度浮點(diǎn)單元。這為你在GK110芯片上的最多2880個(gè)CUDA核心上提供了960個(gè)雙精度浮點(diǎn)單元。
英偉達(dá)對(duì)絕對(duì)性能一直沒有給出明確的態(tài)度,但是我們預(yù)計(jì),GK110在處理器核心上,以1GHz的時(shí)鐘頻率,有望提供每秒近2萬億次浮點(diǎn)運(yùn)算的原始雙精度浮點(diǎn)性能,而在單精度下可能達(dá)到每秒3.5萬億次浮點(diǎn)運(yùn)算。這性能大概是特斯拉M20系列GPU協(xié)處理器所用的現(xiàn)有Fermi GF110 GPU的三倍,也就是說相當(dāng)于每瓦散熱性能高出三倍。
僅僅擁有更多的處理器核心提升不了性能。你還得更高效地利用這些核心;這時(shí)候,Hyper-Q和動(dòng)態(tài)并行處理這兩項(xiàng)功能正好可以派得上用場。
值得關(guān)注的是,這兩項(xiàng)功能并未出現(xiàn)在GK104 GPU芯片上,這款芯片用在了英偉達(dá)已經(jīng)交付給需要單精度浮點(diǎn)運(yùn)算處理的客戶的特斯拉K10協(xié)處理器上。特斯拉K10 GPU協(xié)處理器把兩塊GK104芯片放到一塊PCI-Express卡上,在225瓦散熱范圍內(nèi)提供了每秒4.58萬億次浮點(diǎn)的單精度運(yùn)算能力——這個(gè)性能是Fermi M2090協(xié)處理器的整整3.5倍。
許多超級(jí)計(jì)算機(jī)應(yīng)用程序運(yùn)行消息傳遞接口(MPI)協(xié)議,將工作調(diào)度分派到并行機(jī)器上,而Hyper-Q讓GPU得以在處理MPI工作分配時(shí),以一種更合作的方式與CPU協(xié)同運(yùn)行。如果使用Fermi卡,GPU每次只有一個(gè)MPI任務(wù)由CPU調(diào)度分配,然后卸載給GPU。這顯然是個(gè)瓶頸。
英偉達(dá)為Kepler GPU增添的Hyper-Q功能
借助Hyper-Q,英偉達(dá)為GPU本身添加了一個(gè)隊(duì)列,現(xiàn)在處理器可以同時(shí)把最多32個(gè)不同的MPI任務(wù)調(diào)度分派給GPU。沒必要改動(dòng)一行MPI代碼,就可以充分利用Hyper-Q;CPU與GPU進(jìn)行聯(lián)系時(shí),這項(xiàng)功能完全是自動(dòng)發(fā)揮作用。
為了表明Hyper-Q的效果有多好(以及那些數(shù)千個(gè)CUDA核心不會(huì)無所事事),英偉達(dá)的高級(jí)開發(fā)工程師Peter Messmer拿來了名為CP2K的一些分子模擬代碼。他在博客中表示,這種代碼“對(duì)GPU來說向來一向很難處理的代碼”,測(cè)試了在Hyper-Q功能先關(guān)閉,后開啟的特斯拉K20協(xié)處理器上運(yùn)行起來有多好。
正如Messmer解釋的那樣,當(dāng)MPI進(jìn)程被CPU限制于少量的工作時(shí),MPI應(yīng)用程序“出現(xiàn)了打折扣的性能提升”。CPU頻繁接到任務(wù),而GPU在許多時(shí)候處于閑置狀態(tài)。而混合系統(tǒng)中的GPU提速幅度也不是很明顯,你從這個(gè)基準(zhǔn)測(cè)試中可以看出。這項(xiàng)測(cè)試把特斯拉K20協(xié)處理器放到配備16核心皓龍6200處理器的未來版克雷XK7超級(jí)計(jì)算機(jī)節(jié)點(diǎn)里面。
Hyper-Q為運(yùn)行CP2K分子模擬的節(jié)點(diǎn)將性能提升了2.5倍。
就這個(gè)模擬864個(gè)水分子的特定數(shù)據(jù)集而言,增添CPU和GPU節(jié)點(diǎn)組合其實(shí)提升性能的幅度不是很大。如果是Hyper-Q功能沒有開啟的16個(gè)節(jié)點(diǎn),你能獲得12倍的性能(由于某種原因,英偉達(dá)的Y軸代表較之兩個(gè)CPU+GPU節(jié)點(diǎn)的相對(duì)提速)。但在擁有16個(gè)CPU+GPU節(jié)點(diǎn)、Hyper-Q功能開啟的同一系統(tǒng)上,性能高達(dá)2.5倍。你要知道,英偉達(dá)并沒有承諾:啟用Hyper-Q功能后,所有代碼都會(huì)類似的提速效果。
我們?cè)儐栍ミ_(dá)特斯拉事業(yè)部的高級(jí)主管Sumit Gupta,為什么CP2K測(cè)試不對(duì)Fermi GPU和Kepler GPU進(jìn)行橫向比較。他開玩笑說,英偉達(dá)總得為今年11月在鹽湖城召開的SC12超級(jí)計(jì)算大會(huì)保留壓箱之作。
借助GK110 GPU的另一項(xiàng)功能:動(dòng)態(tài)并行處理,GPU就能夠根據(jù)需要在GPU里面調(diào)度分派工作,受制于由CPU分派給它的運(yùn)算任務(wù)。如果是Fermi GPU,系統(tǒng)中的CPU把工作分派給一個(gè)或多個(gè)CUDA核心,工作的處理結(jié)果會(huì)被送回到CPU。如果進(jìn)一步的運(yùn)算必不可少,CPU就把這部分?jǐn)?shù)據(jù)和算法分派到GPU,然后GPU把處理結(jié)果發(fā)回給CPU,依次往返,直至運(yùn)算計(jì)算完畢。
動(dòng)態(tài)并行處理:讓GPU調(diào)度處理自己的工作
如果使用現(xiàn)有的Fermi GPU,會(huì)有大量的往返操作。動(dòng)態(tài)并行處理功能讓GPU可以處理自己的工作。但是更重要的是,它還可以讓模擬的精細(xì)度實(shí)現(xiàn)動(dòng)態(tài)變化:處理值得關(guān)注的任務(wù)時(shí),獲得更精細(xì)的粒度,而在什么都沒進(jìn)行的模擬方面,基本上什么都不做。
通過調(diào)整模擬的精細(xì)度和數(shù)據(jù)的精細(xì)度,你就能獲得更好的結(jié)果,(在更短的時(shí)間內(nèi))處理更少的工作,不然在所有區(qū)域和時(shí)間片處理細(xì)粒度的模擬時(shí)效果差強(qiáng)人意。
GK110 GPU來自動(dòng)態(tài)并行處理的性能提升
動(dòng)態(tài)并行處理方面最重要的一點(diǎn)是,GPU會(huì)針對(duì)運(yùn)算的粗粒度自動(dòng)作出決策;根據(jù)需要,對(duì)數(shù)據(jù)作出響應(yīng)、啟動(dòng)新的線程。
為了展示動(dòng)態(tài)并行處理的早期測(cè)試結(jié)果,英偉達(dá)沒有進(jìn)行流體力學(xué)模擬或者諸如此類的模擬,而是在另一篇博文中,英偉達(dá)工程師Steven Jones對(duì)動(dòng)態(tài)并行處理功能先開啟、后關(guān)閉的K20 GPU協(xié)處理器進(jìn)行了Quicksort基準(zhǔn)測(cè)試。
如果你忘了以前學(xué)的計(jì)算機(jī)學(xué)入門課程,Jones在博文中添加了他在測(cè)試中所用的Quicksort代碼。值得關(guān)注的是,在動(dòng)態(tài)并行處理功能開啟并使用的GPU上編寫Quicksort例程只用了一半的代碼,那是由于你沒必要控制CPU與GPU之間的來回操作。
從上面那張圖中可以看出,如果你為由CPU排序的每一段數(shù)據(jù)處理所有的運(yùn)行工作——Fermi GPU就需要這么處理,那么它要花更長的時(shí)間來排序。在K20 GPU上,動(dòng)態(tài)并行處理功能把Quicksort的性能提升了兩倍,幾乎能夠隨數(shù)據(jù)集的大小靈活擴(kuò)展。值得關(guān)注的是,這個(gè)K20在處理Quicksort方面與實(shí)際的Fermi GPU相比到底好多少,以及其他工作負(fù)載和模擬如何處理這種GPU自主性。
Gupta告訴我們,特斯拉K20協(xié)處理器有望在今年第四季度首批交付。