分散式計算和並行計算的區別與聯繫在哪裡?
從理論計算機的角度看,主要區別應在通訊的延遲和成本上吧。
並行計算中不同單元之間的通信延遲和成本很低。常見的複雜度類中,NC? 的定義就是一種高度抽象的並行計算。不嚴格地講,NC? 中的問題,如果用多項式多個核,可以在 O(log(n)?) 的時間內計算完。
而分散式計算中,一般認為通訊的延遲和/或成本很高。一種常用的抽象是假設節點內部的計算沒有成本,演算法的複雜度用節點之間的通訊量來衡量。節點之間的總通訊量被稱為通訊複雜度(communication complexity)。值得一提的是,通訊複雜度這個概念是由姚期智引入的。
在密碼學中,還有一個相關的問題是(可信/安全)多方計算,簡稱 MPC。與前兩者的關係大概是這樣
在現實中,因為延遲的關係。通訊輪數經常比通訊量更重要。所以 MPC 中,一個關注的要點(也是一個 open problem)就是如何最小化通訊輪數。
上學期分散式計算的一次作業的一道題,直接搬過來,懶得翻譯了。
Distributed computing is more a concept that opposite to centralized computing while
parallel computing is a counterpart of sequential computing. Although a distributed computing system has the inherent capability of doing parallel computing tasks, a parallel computing system is not necessarily distributed. The main differences of them can be concluded into 4 aspects[1]:Inputs
Distributed computing: The inputs of distributed computing is always distributed.
Parallel computing: In most cases, the inputs are initially centralized, and then the problem is broken into distinct parts to be solved concurrently in order to overcome the inefficiency of sequential. The parallelism is a design choice.
Main concept
Distributed computing: It is about mastering the uncertainties including local computation, non-determinism created by the environment, symmetry breaking, agreement, etc.
Parallel computing: Its main concern is efficiency, for example, scheduling problem and pattern decomposition, etc.
Outputs
Distributed computing: The output of distributed computing is a function of both the inputs and (possibly) the environment.
Parallel computing: The outputs of parallel computing are a function of the inputs.
Paradigmatic problems
Distributed computing: anonymous/oblivious agents, local computing, rendezvous in
arbitrary graphs, agreement problems, fault-tolerant cooperation, facing Byzantine failures.
Parallel computing: simulation, matrix computation, differential equations, etc.
Furthermore, distributed computing has more heterogynous underlying system and hardware compatibility, whilst parallel computing is normally done on a single machine. Distributed computing has a more general range of applications, whilst parallel computing mainly focuses on scientific computing area.
And, System Comparison
[i]Raynal, M. (2015, August).Parallel Computing vs. Distributed Computing: A Great Confusion? (Position Paper). In European Conference on Parallel Processing (pp. 41-53).
這學期剛上完高級操作系統課,現學現賣……
可以認為分散式計算是運行在多台計算機上的並行計算——將計算任務拆分,分配到同一台計算機的多個邏輯核心,乃至計算模塊(例如GPU或者MIC加速卡)上,這屬於傳統的HPC(高性能計算)意義上的並行計算。而分散式計算則在此基礎上更進一步,將計算任務分配到通過網路連接在一起的多台計算機上,大幅提高了整個系統的性能和可擴展性,這是這兩者之間的聯繫。
但是廣義的分散式系統並不一定會進行狹義的並行計算——分散式系統能夠完成的任務遠遠不止HPC意義上的並行計算。實際上,不光是分散式資料庫、分散式文件系統之類的「高大上」系統,一個B/S架構的網站也屬於廣義上的「分散式系統」,它跟HPC意義上的並行計算顯然是沒有任何關係的。
如果不把並行計算當作是某個術語的話,廣義的說,分散式計算是一種並行計算,但是分散式計算強調的是計算髮生在計算機集群上,並行計算強調計算是並行發生的
分散式通常指分散式內存的計算機。相對應的共享內存計算機。
分散式計算的要重點考慮容錯,和集群中不同計算節點間的調度問題。並行計算更細粒度,具體到cpu、gpu計算單元的並行。。
看GFS或任何一個早期分散式的paper就知道,一般在找工作語境下的分散式使用的是便宜的switch作為節點之間通信的,而傳統的HPC是用的intini band
分散式計算重點在於計算可能分布在很多台電腦上,並行計算強調有多個線程或者進程在執行計算。
推薦閱讀:
※MapReduce中的map做兩層for循環,效率特別低?
※spark的shuffle和Hadoop的shuffle(mapreduce)的區別和關係是什麼?
※研一學生~突然搞起了Big Data。在學Hadoop中,突然意識到只會用工具是遠遠不夠的,很想搞懂立面的演算法和思想。請教達人們指點分散式存儲與運算的主要思想與演算法?
※Hadoop和Hadoop2有很大的區別么?