複製鏈接
請複製以下鏈接發送給好友

GPU集羣

鎖定
GPU集羣是一個計算機集羣,其中每個節點配備有圖形處理單元(GPU)。通過圖形處理單元(GPGPU)上的通用計算來利用現代GPU的計算能力,可以使用GPU集羣執行非常快速的計算。GPU集羣可以使用來自兩個主要獨立硬件供應商的硬件(AMD和NVIDIA)。
中文名
GPU集羣
學    科
計算機硬件
定    義
一個計算機集羣
目    的
執行非常快速的計算
有關術語
圖形處理單元

GPU集羣簡介

從硬件架構角度,GPU集羣只是把作為外設通過高速PCI總線連接到節點內部通過PCI總線連接GPU。並且通過高速以太網或者高速交換網絡進行互連。GPU的加入使得集羣呈現節點內部計算資源的異構化。GPU集羣單個節點內部不僅可以包含單核CPU、多核CPU甚至多CPU計算資源,而且包含了單GPU或者多GPU。由於GPU不僅具有異構於CPU的計算資源,而且具有複雜而程序員可見的存儲層次。CPU與GPU之間通過總線連接,雖然GPU作為計算資源,但是GPU仍然為計算節點的外部設備,CPU和GPU之間的數據傳輸必須在CPU的控制之下顯式進行。GPU作為面向多規模數據並行計算的計算資源使得GPU集羣在並行計算能力呈現多層次化。GPU集羣不僅能夠支持常規粒度的單程序多數據和多程序多數據計算能力,並且可以支持更細粒度的面向大規模數據單程序多數據的和單指令多數據計算能力。給集羣提供了強大的大規模數據並行處理能力。
GPU集羣這種異構計算資源和多層次並行計算能力給並行程序的設計帶來了巨大的困難。並行編程環境作為集羣系統的必需部件,因此集羣系統的設計必須包含能夠契合GPU集羣體系結構的編程模型和方便可靠的編程環境。主流的GPU集羣編程模型是MPI+CUDA,負責進程間的數據傳輸,CUDA負責GPU異構計算資源上的程序設計。這種模型雖然不能充分契合體系結構,但是提供給程序員使用異構計算資源和發揮GPU集羣多層次並行的能力。對於GPU集羣環境,集羣中間件包括單一系統映像與傳統集羣基本一致。由於GPU出色的數據級並行計算能力,GPU集羣具備強的大規模數據級並行計算能力,並且這也是GPU集羣最佳出眾的地方。另外GPU是面向吞吐率的計算設備,因此GPU集羣比傳統集羣具有更強的吞吐率。同樣通過節點的擴增以及硬件的更新升級,GPU集羣同樣具備可擴展性特點。除此之外,GPU集羣具有更高的性能價格比以及性能功耗比 [1] 

GPU集羣集羣編程模型與範例

模式和應用程序模板描述了一個一般化的特徵元組,該元組充分地説明了一個並行算法具有的特徵,包括進程屬性(結構、拓撲和執行)、交互特性以及數據特點(劃分和放置。並行程序可以歸納為一些有明確定義的不同編程模式,絕大多數的並行程序所包含的模式種類都相對較少。並行計算資源和問題本身的並行類型決定了程序所採用的並行模式,計算資源可能決定系統可以有效支持的並行粒度大小,並行類型反映了一個應用程序或數據的結構。常用的並行編程模式包括任務播種、單控制流多數據流、數據流水線、分治策略。
任務播種又叫主從模式,包括主任務和多個從任務。主任務主要負責將問題分解成多個小的任務,同時收集各個子問題的解,將其彙總等到計算的最終結構。從進程執行一個很簡單的循環:接受消息,進行計算,向主進程發送結果。一般情況下,只有主從進程之間有消息傳遞。
單控制流多數據流是一種普遍使用的模型。每個進程基本上執行同一代碼段,但是處理的數據不同。這種方法需要將應用程序數據分給不同的處理器。
數據流水線是一種比單控制流多數據流更細粒度的並行機制,傳統的數據流水線建立在功能劃分基礎上,然後每個處理器執行整個算法的一小部分。
各進程被組織成為一條流水線一一每個進程相當於流水線的一個階段,負責某個特定的任務。通信模式可以非常簡單,因為數據只在流水線的相鄰階段傳遞。由於這個原因,這種類型被看作數據流模型。通信完全可以異步執行。這種模型的效率直接取決於流水線各階段平衡負載的能力。該模型在重構系統的健壯性可以通過在各階段之間提供多個獨立路徑來實現。傳統的功能劃分雖然能夠有效分解問題,簡化設計,但是無法有效利用異構計算資源本身的獨特而強大的計算能力。由於GPU集羣強大的異構的大規模數據並行計算能力,使得計算為單元的劃分變得必要,因此,針對GPU集羣系統,在功能劃分的基礎之上,通過數據並行計算為單位的再劃分和組合使得數據流水線保留了原本細粒度計算特點,又能夠充分適應GPU集羣具有強大大規模數據並行計算能力的特點。
分治策略是將一個問題分成兩個或者兩個以上的子問題,然後獨立的解決每一個這樣的子問題,最後將這些結果綜合起來得到最後解。一般情況下,這些子問題和原始問題的實質一樣,只是規模變小了,這樣通過遞歸旳方法可以解決。分治策略中常見的三種計算操作是:分解、計算和彙總。程序組織成一種虛擬樹結構,一些進程派生出子任務,並且彙總這些子任務的結果計算出綜合解。

GPU集羣計算機集羣

計算機集羣簡稱集羣是一種計算機系統,它通過一組鬆散集成的計算機軟件和/或硬件連接起來高度緊密地協作完成計算工作。在某種意義上,他們可以被看作是一台計算機。集羣系統中的單個計算機通常稱為節點,通常通過局域網連接,但也有其它的可能連接方式。集羣計算機通常用來改進單個計算機的計算速度和/或可靠性。一般情況下集羣計算機比單個計算機,比如工作站或超級計算機性能價格比要高得多。集羣分為同構與異構兩種,它們的區別在於:組成集羣系統的計算機之間的體系結構是否相同。集羣計算機按功能和結構可以分成以下幾類:高可用性集羣、負載均衡集羣、高性能計算集羣、網格計算 。
高可用性集羣
一般是指當集羣中有某個節點失效的情況下,其上的任務會自動轉移到其他正常的節點上。還指可以將集羣中的某節點進行離線維護再上線,該過程並不影響整個集羣的運行。
負載均衡集羣
負載均衡集羣運行時,一般通過一個或者多個前端負載均衡器,將工作負載分發到後端的一組服務器上,從而達到整個系統的高性能和高可用性。這樣的計算機集羣有時也被稱為服務器羣(Server Farm)。一般高可用性集羣和負載均衡集羣會使用類似的技術,或同時具有高可用性與負載均衡的特點。Linux虛擬服務器(LVS)項目在Linux操作系統上提供了最常用的負載均衡軟件。
高性能計算集羣
高性能計算集羣採用將計算任務分配到集羣的不同計算節點而提高計算能力,因而主要應用在科學計算領域。比較流行的HPC採用Linux操作系統和其它一些免費軟件來完成並行運算。這一集羣配置通常被稱為Beowulf集羣。這類集羣通常運行特定的程序以發揮HPC cluster的並行能力。這類程序一般應用特定的運行庫,比如專為科學計算設計的MPI庫。
HPC集羣特別適合於在計算中各計算節點之間發生大量數據通訊的計算作業,比如一個節點的中間結果或影響到其它節點計算結果的情況。
網格計算
網格計算或網格集羣是一種與集羣計算非常相關的技術。網格與傳統集羣的主要差別是網格是連接一組相關並不信任的計算機,它的運作更像一個計算公共設施而不是一個獨立的計算機。還有,網格通常比集羣支持更多不同類型的計算機集合。網格計算是針對有許多獨立作業的工作任務作優化,在計算過程中作業間無需共享數據。網格主要服務於管理在獨立執行工作的計算機間的作業分配。資源如存儲可以被所有節點共享,但作業的中間結果不會影響在其他網格節點上作業的進展。
參考資料
  • 1.    霍洪鵬. 面向通用計算的GPU集羣設計[D].復旦大學,2012.