科普:並行計算、分布式計算、集群計算和雲計算


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服務器 ,可以管理大數據量與大集群,關鍵技術在於能夠對雲內的基礎設施進行動態按需分配與管理。雲計算與並行計算、分布式計算的區別,以計算機用戶來說,並行計算是由單個用戶完成的,分布式計算是由多個用戶合作完成的,雲計算是沒有用戶參與,而是交給網絡另一端的服務器完成的。

   

 

本文整理自網絡

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM