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