并行计算和分布式计算之间的区别是什么?当谈到可扩展性和效率时,在机器集群中处理计算的解决方案是很常见的,有时它被称为并行处理或分布式处理。
在某种程度上,计算似乎总是并行的,因为有些事情是同时运行的。但是分布式计算只是与使用多台机器有关,还是有任何进一步的特殊性可以区分这两种处理?例如,说计算是并行和分布式的不是多余的吗?
并行计算和分布式计算之间的区别是什么?当谈到可扩展性和效率时,在机器集群中处理计算的解决方案是很常见的,有时它被称为并行处理或分布式处理。
在某种程度上,计算似乎总是并行的,因为有些事情是同时运行的。但是分布式计算只是与使用多台机器有关,还是有任何进一步的特殊性可以区分这两种处理?例如,说计算是并行和分布式的不是多余的吗?
术语“并行计算”和“分布式计算”当然有很大的重叠,但可以进一步区分。实际上,您已经在问题中做到了这一点,稍后询问“并行处理”和“分布式处理”。
人们可以将“分布式计算”视为涉及“分布式处理”以及例如“分布式存储”的更一般的术语。常用术语“分布式”通常是指在物理上分离的机器之间通过网络传递某种消息。
术语“并行计算”也在进一步定义的过程中,例如通过明确区分术语“并行”和“并发”,其中 - 粗略地 - 第一个是指数据并行,后者是指任务并行,尽管有几乎没有真正严格和具有约束力的定义。
所以可以这么说
到目前为止给出的答案非常好,但我也期待强调并行处理和分布式处理之间的特殊区别:执行的代码。考虑到并行进程,无论并行度(指令、数据、任务)如何,执行的代码都是相同的。您编写一个代码,它将由不同的线程/处理器执行,例如,在计算矩阵乘积或生成排列时。
另一方面,分布式计算涉及在不同的处理器(来自一台或多台机器)中同时执行不同的算法/程序。这些计算随后通过使用可用的数据通信/同步方式(共享内存、网络)合并为中间/最终结果。此外,分布式计算对于大数据处理非常有吸引力,因为它允许利用磁盘并行性(通常是大型数据库的瓶颈)。
最后,对于并行度的水平,它可以被视为对同步的约束。例如,在单指令多数据 (SIMD) 的 GPGPU 中,并行性是通过为单个指令提供不同的输入来实现的,每对(data_i, 指令)由不同的线程执行。这样的限制是,在分支分支的情况下,有必要丢弃大量不必要的计算,直到线程重新收敛。但是,对于 CPU 线程,它们通常会发散;然而,人们可以使用同步结构来授予代码特定部分的并发执行。