并行计算和分布式计算的区别是什么?当涉及到可伸缩性和效率时,通常会看到解决方案在计算机集群中处理计算,有时被称为并行处理或分布式处理。
在某种程度上,计算似乎总是并行的,因为有些事情是并发运行的。但是,分布式计算仅仅是与多台机器的使用有关,还是有更多的特性来区分这两种处理?例如,说一个计算是并行的和分布式的,难道不是多余的吗?
发布于 2014-05-15 05:19:34
简单地说,“并行”意味着在不同的资源(CPU)上并发运行,而“分布式”意味着跨不同的计算机运行,涉及到与网络相关的问题。
例如,使用OpenMP的并行计算不是分布式的,而使用讯息传递的并行计算通常是分布式的。
处于“分布式而非并行”的设置意味着资源使用不足,因此很少会遇到这种情况,但在概念上是可能的。
发布于 2014-05-15 11:46:38
“并行计算”和“分布式计算”这两个术语当然有很大的重叠,但可以进一步区分。实际上,您已经在您的问题中这样做了,稍后询问“并行处理”和“分布式处理”。
人们可以将“分布式计算”视为涉及“分布式处理”以及例如“分布式存储”的更普遍的术语。通用术语"distributed“通常指的是通过网络在物理上分离的机器之间的某种讯息传递。
“并行计算”一词也正在被进一步界定,例如,通过明确区分“并行”和“并发”两个术语,其中第一个术语大致是指数据并行性,后者指的是任务并行性,尽管几乎没有真正严格和具有约束力的定义。
所以可以说
发布于 2014-05-18 17:38:01
到目前为止,给出的答案是非常好的,但我也希望强调并行处理和分布式处理之间的一个特殊区别:执行的代码。考虑到并行进程,无论并行程度(指令、数据、任务)如何,执行的代码都是相同的。编写单个代码,它将由不同的线程/处理器执行,例如,在计算矩阵产品或生成排列时。
另一方面,分布式计算涉及在不同处理器(来自一台或多台计算机)中同时执行不同的算法/程序。这些计算后来通过使用可用的数据通信/同步方法(共享内存、网络)合并成中间/最终结果。此外,分布式计算对于BigData处理非常有吸引力,因为它允许利用磁盘并行性(通常是大型数据库的瓶颈)。
最后,对于并行级别,可以将其视为同步的约束。例如,在单指令多数据(SIMD)的GPGPU中,对单个指令有不同的输入,每对(data_i,指令)由不同的线程执行。这就是约束,在分支发散的情况下,有必要丢弃大量不必要的计算,直到线程重新收敛为止。然而,对于CPU线程,它们通常是不同的;然而,可以使用同步结构来授予代码特定部分的并发执行。
https://datascience.stackexchange.com/questions/81
复制相似问题