并行和分布式计算


15

并行计算和分布式计算之间的区别是什么?当涉及到可伸缩性和效率时,通常会看到在机器集群中处理计算的解决方案,有时将其称为并行处理或分布式处理。

从某种意义上讲,计算似乎总是并行的,因为有些事情是同时运行的。但是,分布式计算是否仅与使用一台以上的机器有关,还是存在区分这两种处理的其他特征?举例来说,计算是并行和分布式的,这是否多余?

Answers:


16

简单地说,“并行”意味着同时在不同的资源(CPU)上运行,而“分布式”意味着在不同的计算机上运行,​​涉及与网络相关的问题。

使用OpenMP的并行计算是不分布式的,而使用消息传递的并行计算通常是分布式的。

处于“分布式但非并行”的环境将意味着资源使用不足,因此很少遇到,但从概念上讲是可能的。


4

术语“并行计算”和“分布式计算”当然有很大的重叠,但是可以进一步区分。实际上,通过稍后询问“并行处理”和“分布式处理”,您已经在问题中做到了。

人们可以将“分布式计算”视为更笼统的术语,涉及“分布式处理”以及“分布式存储”。通用术语“分布式”通常是指在物理上分离的机器之间通过网络传递的某种消息

术语“并行计算”还处于进一步定义的过程中,例如通过显式区分术语“并行”和“并发”,其中-第一个大致是指数据并行性,而后者则是任务并行性,尽管并没有真正严格的定义。

所以可以这么说

  • “分布式处理”通常(尽管不一定)表示它也是“并行处理”
  • “分布式计算”更为笼统,还涵盖了与并行性无关的方面
  • 很明显,“并行计算” /“并行处理”并不意味着它是“分布式的”

3

到目前为止给出的答案非常好,但是我也期望强调并行处理和分布式处理之间的特殊区别:执行的代码。考虑到并行进程,无论并行级别(指令,数据,任务)如何,执行的代码都是相同的。您编写一个代码,它将由不同的线程/处理器执行,例如,在计算矩阵乘积或生成排列时。

另一方面,分布式计算涉及在不同处理器(来自一个或多个机器)中同时执行不同算法/程序。通过使用可用的数据通信/同步方式(共享内存,网络),此类计算随后合并为中间/最终结果。此外,分布式计算对于BigData处理非常有吸引力,因为它允许利用磁盘并行性(通常是大型数据库的瓶颈)。

最后,对于并行度,它可以被视为对同步的限制。例如,在GPGPU(单指令多数据(SIMD))中,并行性是通过为一条指令具有不同的输入而发生的,每对(data_i,指令)由不同的线程执行。这样的限制是,在分支分支不同的情况下,有必要丢弃大量不必要的计算,直到线程重新收敛为止。但是,对于CPU线程,它们通常会有所不同。但是,可以使用同步结构来授权并发执行代码的特定部分。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.