工業網際網路平臺核心技術之三:平行計算與分散式計算
之所以將兩種計算技術放在一起,是因為這兩種計算具有共同的特點,都是運用並行來獲得更高效能運算,把大任務分為N個小任務。但兩者還是有區別的,關於兩者的區別在後面說。
一、平行計算
1、平行計算概念
平行計算又稱平行計算是指一種能夠讓多條指令同時進行的計算模式,可分為時間並行和空間並行。時間並行即利用多條流水線同時作業,空間並行是指使用多個處理器執行併發計算,以降低解決複雜問題所需要的時間。
平行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程。為執行平行計算,計算資源應包括一臺配有多處理機(並行處理)的計算機、一個與網路相連的計算機專有編號,或者兩者結合使用。平行計算主要目的在於兩個方面:
(1) 加速求解問題的速度。 (2) 提高求解問題的規模。
2、平行計算的原理
平行計算能快速解決大型且複雜的計算問題。此外還能利用非本地資源,節約成本 ― 使用多個“廉價”計算資源取代大型計算機,同時克服單個計算機上存在的儲存器限制。 為提高計算效率,平行計算處理問題一般分為以下三步:
- 將工作分離成離散獨立部分,有助於同時解決;
- 同時並及時地執行多個程式指令;
- 將處理完的結果返回主機經一定處理後顯示輸出。
平行計算是相對於序列計算來說的,所謂平行計算分為時間上的並行和空間上的並行。 時間上的並行就是指流水線技術,而空間上的並行則是指用多個處理器併發的執行計算。
從上圖可以看出,序列計算必須按步驟一步一步計算才能出來最終結果。而平行計算則要將問題分成N多個子任務,每個子任務並行執行計算。而每個子任務是非獨立的,每個子任務的計算結果決定最終的結果。這個和分散式計算不同。
- 平行計算需滿足的基本條件
- 平行計算機。平行計算機至少包含兩臺或兩臺以上處理機,這此處理機通過網際網路絡相互連線,相互通訊。
- 應用問題必須具有並行度。也就是說,應用可以分解為多個子任務,這些子任務可以並行地執行。將一個應用分解為多個子任務的過程,稱為並行演算法的設計。
- 並行程式設計。在平行計算機提供的並行程式設計環境上,具體實現並行演算法,編制並行程式並執行該程式,從而達到並行求解應用問題的目的。 、
二、分散式計算
- 分散式計算概念
分散式計算是一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。分散式計算和集中式計算相對應的概念。
2、分散式計算的優點
分散式計算是在兩個或多個軟體互相共享資訊,這些軟體既可以在同一臺計算機上執行,也可以在通過網路連線起來的多臺計算機上執行。 分散式計算比起其它演算法具有以下幾個優點:
(1)稀有資源可以共享。
(2)通過分散式計算可以在多臺計算機上平衡計算負載。
(3)可以把程式放在最適合執行它的計算機上。其中,共享稀有資源和平衡負載是計算機分散式計算的核心思想之一。
3、分散式計算原理
Hadoop計算框架是出現比較早的一個分散式計算框架,由Apache基金會所開發。使用者可以在不瞭解分散式底層細節的情況下,開發分散式程式。
另外,邊緣計算也是分散式計算的一種,前文《小白聊智慧製造之十四:一文輕鬆讀懂邊緣計算》有所表述,感興趣的可以去看看。
三、平行計算與分散式計算的區別
平行計算和分散式計算既有區別也有聯絡。從解決物件上看,兩者都是大任務化為小任務,這是他們共同之處。 具體區別和聯絡如下表所示:
專案 |
平行計算 |
分散式計算 |
|
相同點 |
|
||
不 同 點 |
時效性 |
強調 |
不強調 |
獨立性 |
弱,小任務計算結果決定最終計算結果 |
強,小任務計算結果一般不影響最終結果 |
|
任務包之間關係 |
關係密切 |
相互獨立 |
|
每個節點任務 |
必要,並且時間同步 |
不必要,時間沒有限制 |
|
節點通訊 |
必須 |
不必須,甚至可以無網路 |
|
應用的場合 |
海量資料處理 |
模式類窮舉法 |
如上表所示,平行計算的傳統目的是提供單處理器無法提供的效能(處理器能力或儲存器);因此,它的目的是使用多處理器求解單個問題。而分散式計算的目的主要是提供方便,這種方便包括可用性、可靠性以及物理的分佈(能從許多不同場所訪問分散式系統)。 在平行計算中,處理器間的互動一般很頻繁,往往具有細粒度和低開銷的特徵,並且被認為是可靠的。而在分散式計算中,處理器間的互動不頻繁,互動特徵是粗粒度,並且被認為是不可靠的。平行計算注重短的執行時間,分散式計算則注重長的正常執行時間。
結語
平行計算、分散式計算以及網格計算和雲端計算都是屬於高效能運算(HPC)的範疇,主要目的在於對大資料的分析與處理,但它們卻存在很多差異。我們需要了解兩者的原理、特點和運用的場合,對雲端計算的瞭解大有裨益。