標籤:

分散式計算和並行計算到底有啥區別 能讓我知道什麼時候是哪種就好了?


沒有本質區別。原來搞MPI之類那幫人就喜歡把他們乾的事叫並行計算,就這樣了。其實沒什麼本質差別。


分散式計算,運算分布到多個電腦,偏向軟體框架。如分散式MySQL,分散式Hadoop,分散式Redis,分散式DNS。

並行計算,運算並行到多個cpu上,偏向計算演算法。如並行無鎖數據結構,並行矩陣演算法,並行遺傳演算法,並行比特幣挖礦演算法。

可以一起用,如分散式的並行運算比特幣挖礦機,就是分散式的電腦用比特幣協議交換信息,每台電腦內部計算用的是並行演算法。


非要說的話。。那就拿定義來講好了,先把結論copy上來:

並行計算是相對於串列計算而言的;分散式計算是相對於單機計算而言的。如果一個計算是串列跑的,即使他是在集群上跑的,也不是並行計算;同時,如果一個計算是在集群上跑的,即使是串列跑的,也是分散式計算。

-------------- 詳細內容 --------------

並行計算是相對於串列計算而言的,後者很容易理解,計算在空間和時間上都是依次完成的。參考wikipedia對於並行計算的定義:

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

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

因此,並行計算是個寬泛的概念,只要計算不是串列的跑,都算並行計算,無論是單機還是集群之上。同時,如果一個計算是串列跑的,即使他是在集群上運行,也不是並行計算;反之,如果一個計算不是串列跑的,就算他是單機運行,也是並行計算。

分散式計算是相對於單機計算而言的,由一組機器協同完成計算,參考wikipedia定義:

分散式系統是一組電腦(computer),通過網路相互鏈接傳遞消息與通信後並協調它們的行為而形成的系統。[1]組件之間彼此進行交互以實現一個共同的目標。把需要進行大量計算的工程數據分區成小塊,由多台計算機分別計算,再上傳運算結果後,將結果統一合併得出數據結論的科學。分散式系統的例子來自有所不同的面向服務的架構,大型多人在線遊戲,對等網路應用。

因此,並行計算/串列計算和單機計算/分散式計算之間互有重疊部分,用一個圖表示可能比較清晰一點:

單機計算和並行計算重疊部分包含了現有的部分單機優化和發展,有不少還是硬體級別的:

  1. CPU流水線,
  2. 多級cache
  3. DMA
  4. SMP
  5. SIMD指令集

只是大家現在最關注的是並行計算和分散式計算重疊的部分而已,hadoop,spark 巴拉巴拉。


字面理解就好了。

分布就是到處放,

並行就是同時跑。

這些概念好沒勁,好無聊!


推薦閱讀:

請教mesos、k8s、spark、馬拉松、swarm、zookeeper、map-reduce?
如何理解深度學習分散式訓練中的large batch size與learning rate的關係?
UC Berkeley提出新型分散式執行框架Ray:有望取代Spark
深入淺出Spark(二) 什麼是RDD
如何看UCBerkeley RISELab即將問世的Ray,replacement of Spark?

TAG:分散式計算 |