並行計算、分佈式計算、集羣計算和雲計算

科普:並行計算、分佈式計算、集羣計算和雲計算

 

1. 並行計算(Parallel Computing)  

  並行計算或稱平行計算是相對於串行計算來說的。並行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程。爲執行並行計算,計算資源應包括一臺配有多處理機(並行處理)的計算機、一個與網絡相連的計算機專有編號,或者兩者結合使用。並行計算的主要目的是快速解決大型且複雜的計算問題。

  並行計算可以劃分成時間並行和空間並行。時間並行即流水線技術,空間並行使用多個處理器執行併發計算,當前研究的主要是空間的並行問題。以程序和算法設計人員的角度看,並行計算又可分爲數據並行和任務並行。數據並行把大的任務化解成若干個相同的子任務,處理起來比任務並行簡單。

  空間上的並行導致兩類並行機的產生,按照Michael Flynn(費林分類法)的說法分爲單指令流多數據流(SIMD)和多指令流多數據流(MIMD),而常用的串行機也稱爲單指令流單數據流(SISD)。MIMD類的機器又可分爲常見的五類:並行向量處理機(PVP)、對稱多處理機(SMP)、大規模並行處理機(MPP)、工作站機羣(COW)、分佈式共享存儲處理機(DSM)。

 

2. 分佈式計算(Distributed Computing)

  分佈式計算這個研究領域,主要研究分散系統(Distributed system)如何進行計算。分散系統是一組計算機,通過計算機網絡相互鏈接與通信後形成的系統。把需要進行大量計算的工程數據分區成小塊,由多臺計算機分別計算,在上傳運算結果後,將結果統一合併得出數據結論的科學。

  目前常見的分佈式計算項目通常使用世界各地上千萬志願者計算機的閒置計算能力,通過互聯網進行數據傳輸。如分析計算蛋白質的內部結構和相關藥物的Folding@home項目,該項目結構龐大,需要驚人的計算量,由一臺電腦計算是不可能完成的。即使現在有了計算能力超強的超級電腦,但是一些科研機構的經費卻又十分有限。

   分佈式計算比起其它算法具有以下幾個優點: 
  1、稀有資源可以共享。
  2、通過分佈式計算可以在多臺計算機上平衡計算負載。
  3、可以把程序放在最適合運行它的計算機上。其中,共享稀有資源和平衡負載是計算機分佈式計算的核心思想之一。

 

3. 並行計算與分佈式計算的區別

  (1)簡單的理解,引用Answers.com上一個答案:

  Parallel computing and distributed computing are ways of exploiting parallelism in computing to achieve higher performance. Multiple processing elements are used to solve a problem, either to have it done faster or to have a larger size problem been solved. To state simply, if the processing elements share the memory, it is called parallel computing, otherwise it is called distributed computing. Some have opinion that distributed computing is a special form of parallel computing.

  並行計算與分佈式計算都是運用並行來獲得更高性能,化大任務爲小任務。簡單說來,如果處理單元共享內存,就稱爲並行計算,反之就是分佈式計算。也有人認爲分佈式計算是並行計算的一種特例。

  但是分佈式的任務包互相之間有獨立性,上一個任務包的結果未返回或者是結果處理錯誤,對下一個任務包的處理幾乎沒有什麼影響。因此,分佈式的實時性要求不高,而且允許存在計算錯誤(因爲每個計算任務給好幾個參與者計算,上傳結果到服務器後要比較結果,然後對結果差異大的進行驗證。

  分佈式要處理的問題一般是基於“尋找”模式的。所謂的“尋找”,就相當於窮舉法!爲了嘗試到每一個可能存在的結果,一般從0~N( 某一數值)被一個一個的測試,直到我們找到所要求的結果。事實上,爲了易於一次性探測到正確的結果,我們假設結果是以某個特殊形式開始的。在這種類型的搜索裏,我們也許幸運的一開始就找到答案;也許不夠走運以至於到最後才找到答案,這都很公平。

  這麼說,並行程序並行處理的任務包之間有很大的聯繫,而且並行計算的每一個任務塊都是必要的,沒有浪費的分割的,就是每個任務包都要處理,而且計算結果相互影響,就要求每個的計算結果要絕對正確,而且在時間上要儘量做到同步,而分佈式的很多任務塊可以根本就不處理,有大量的無用數據塊,所以說分佈式計算的速度儘管很快,但是真正的“效率”是低之再低 的,可能一直在尋找,但是永遠都找不到,也可能一開始就找到了;而並行處理不同,它的任務包個數相對有限,在一個有限的時間應該是可能完成的。

  分佈式的編寫一般用的是C++(也有用JAVA的,但是都不是主流),基本不用MPI接口。並行計算用MPI或者OpenMP。

 

4. 集羣計算(Cluster Computing)

  計算機集羣將一組鬆散集成的計算機軟件或硬件連接起來高度緊密地協作完成計算工作。在某種意義上,他們可以被看作是一臺計算機。集羣系統中的單個計算機通常稱爲節點,通常通過局域網連接,但也有其它的可能連接方式。集羣計算機通常用來改進單個計算機的計算速度和/或可靠性。一般情況下集羣計算機比單個計算機,比如工作站或超級計算機性價比要高得多。

  根據組成集羣系統的計算機之間體系結構是否相同,集羣可分爲同構與異構兩種。集羣計算機按功能和結構可以分爲,高可用性集羣(High-availability (HA) clusters)、負載均衡集羣(Loadbalancing clusters)、高性能計算集羣(High-performance (HPC)clusters)、網格計算(Grid computing)。

  高可用性集羣,一般是指當集羣中有某個節點失效的情況下,其上的任務會自動轉移到其他正常的節點上。還指可以將集羣中的某節點進行離線維護再上線,該過程並不影響整個集羣的運行。

  負載均衡集羣,負載均衡集羣運行時,一般通過一個或者多個前端負載均衡器,將工作負載分發到後端的一組服務器上,從而達到整個系統的高性能和高可用性。這樣的計算機集羣有時也被稱爲服務器羣(Server Farm)。一般高可用性集羣和負載均衡集羣會使用類似的技術,或同時具有高可用性與負載均衡的特點。Linux虛擬服務器(LVS)項目在Linux操作系統上提供了最常用的負載均衡軟件。

  高性能計算集羣,高性能計算集羣採用將計算任務分配到集羣的不同計算節點兒提高計算能力,因而主要應用在科學計算領域。比較流行的HPC採用Linux操作系統和其它一些免費軟件來完成並行運算。這一集羣配置通常被稱爲Beowulf集羣。這類集羣通常運行特定的程序以發揮HPC cluster的並行能力。這類程序一般應用特定的運行庫, 比如專爲科學計算設計的MPI庫。HPC集羣特別適合於在計算中各計算節點之間發生大量數據通訊的計算作業,比如一個節點的中間結果或影響到其它節點計算結果的情況。

 

5. 網格計算(Grid Computing)

  網格計算是分佈式計算的一種,也是一種與集羣計算非常相關的技術。如果我們說某項工作是分佈式的,那麼,參與這項工作的一定不只是一臺計算機,而是一個計算機網絡,顯然這種“螞蟻搬山”的方式將具有很強的數據處理能力。網格計算的實質就是組合與共享資源並確保系統安全。

  網格計算通過利用大量異構計算機的未用資源(CPU周 期和磁盤存儲),將其作爲嵌入在分佈式電信基礎設施中的一個虛擬的計算機集羣,爲解決大規模的計算問題提供一個模型。網格計算的焦點放在支持跨管理域計算 的能力,這使它與傳統的計算機集羣或傳統的分佈式計算相區別。網格計算的目標是解決對於任何單一的超級計算機來說仍然大得難以解決的問題,並同時保持解決 多個較小的問題的靈活性。這樣,網格計算就提供了一個多用戶環境。

 

6. 集羣計算與網格計算的區別

  (1)簡單地,網格與傳統集羣的主要差別是網格是連接一組相關並不信任的計算機,它的運作更像一個計算公共設施而不是一個獨立的計算機。網格通常比集羣支持更多不同類型的計算機集合。

  (2)網格本質上就是動態的,集羣包含的處理器和資源的數量通常都是靜態的。在網格上,資源則可以動態出現,資源可以根據需要添加到網格中或從網格中刪除。

  (3)網格天生就是在本地網、城域網或廣域網上進行分佈的。網格可以分佈在任何地方。而集羣物理上都包含在一個位置的相同地方,通常只是局域網互連。集羣互連技 術可以產生非常低的網絡延時,如果集羣距離很遠,這可能會導致產生很多問題。物理臨近和網絡延時限制了集羣地域分佈的能力,而網格由於動態特性,可以提供 很好的高可擴展性。

  (4)集羣僅僅通過增加服務器滿足增長的需求。然而,集羣的服務器數量、以及由此導致的集羣性能是有限的:互連網絡容量。也就是說如果一味地想通過擴大規模來提高集羣計算機的性能,它的性價比會相應下降,這意味着我們不可能無限制地擴大集羣的規模。 而網格虛擬出空前的超級計算機,不受規模的限制,成爲下一代Internet的發展方向。

  (5)集羣和網格計算是相互補充的。很多網格都在自己管理的資源中採用了集羣。實際上,網格用戶可能並不清楚他的工作負載是在一個遠程的集羣上執行的。儘管網格與集羣之間存在很多區別,但是這些區別使它們構成了一個非常重要的關係,因爲集羣在網格中總有一席之地—— 特定的問題通常都需要一些緊耦合的處理器來解決。然而,隨着網絡功能和帶寬的發展,以前採用集羣計算很難解決的問題現在可以使用網格計算技術解決了。理解網格固有的可擴展性和集羣提供的緊耦合互連機制所帶來的性能優勢之間的平衡是非常重要的。

 

7. 雲計算(Cloud Computing)

  雲計算是最新開始的新概念,它不只是計算等計算機概念,還有運營服務等概念了。它是分佈式計算、並行計算和網格計算的發展,或者說是這些概念的商業實現。雲計算不但包括分佈式計算還包括分佈式存儲和分佈式緩存。分佈式存儲又包括分佈式文件存儲和分佈式數據存儲。

 

8. 雲計算與並行、分佈式、網格和集羣計算的區別

  雲計算是從集羣技術發展而來,區別在於集羣雖然把多臺機器聯了起來,但其某項具體任務執行的時候還是會被轉發到某臺服務器上,而云可以簡單的認爲是任務可以被分割成多個進程在多臺服務器上並行計算,然後得到結果,好處在於大數據量的操作性能非常好。雲可以使用廉價的PC服務器 ,可以管理大數據量與大集羣,關鍵技術在於能夠對雲內的基礎設施進行動態按需分配與管理。雲計算與並行計算、分佈式計算的區別,以計算機用戶來說,並行計算是由單個用戶完成的,分佈式計算是由多個用戶合作完成的,雲計算是沒有用戶參與,而是交給網絡另一端的服務器完成的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章