之所以将两种计算技术放在一起,是因为这两种计算具有共同的特点,都是运用并行来获得更高性能计算,把大任务分为N个小任务。但两者还是有区别的,关于两者的区别在后面说。

 

一、并行计算

1、并行计算概念


并行计算又称平行计算是指一种能够让多条指令同时进行的计算模式,可分为时间并行和空间并行。时间并行即利用多条流水线同时作业,空间并行是指使用多个处理器执行并发计算,以降低解决复杂问题所需要的时间。

并行计算(Parallel
Computing)是指同时使用多种计算资源解决计算问题的过程。为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算主要目的在于两个方面: 

(1) 加速求解问题的速度。 (2) 提高求解问题的规模。

2、并行计算的原理



 


并行计算能快速解决大型且复杂的计算问题。此外还能利用非本地资源,节约成本 ― 使用多个“廉价”计算资源取代大型计算机,同时克服单个计算机上存在的存储器限制。     为提高计算效率,并行计算处理问题一般分为以下三步:  

* 将工作分离成离散独立部分,有助于同时解决;  
* 同时并及时地执行多个程序指令;   
* 将处理完的结果返回主机经一定处理后显示输出。 
并行计算是相对于串行计算来说的,所谓并行计算分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。




从上图可以看出,串行计算必须按步骤一步一步计算才能出来最终结果。而并行计算则要将问题分成N多个子任务,每个子任务并行执行计算。而每个子任务是非独立的,每个子任务的计算结果决定最终的结果。这个和分布式计算不同。

 

* 并行计算需满足的基本条件
* 并行计算机。并行计算机至少包含两台或两台以上处理机,这此处理机通过互联网络相互连接,相互通信。  
* 应用问题必须具有并行度。也就是说,应用可以分解为多个子任务,这些子任务可以并行地执行。将一个应用分解为多个子任务的过程,称为并行算法的设计。  
* 并行编程。在并行计算机提供的并行编程环境上,具体实现并行算法,编制并行程序并运行该程序,从而达到并行求解应用问题的目的。    、
 

二、分布式计算

 

* 分布式计算概念

分布式计算是一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。分布式计算和集中式计算相对应的概念。

2、分布式计算的优点

分布式计算是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。
分布式计算比起其它算法具有以下几个优点:

(1)稀有资源可以共享。

(2)通过分布式计算可以在多台计算机上平衡计算负载。

(3)可以把程序放在最适合运行它的计算机上。其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。

3、分布式计算原理



Hadoop计算框架是出现比较早的一个分布式计算框架,由Apache基金会所开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。

另外,边缘计算也是分布式计算的一种,前文《小白聊智慧制造之十四:一文轻松读懂边缘计算》有所表述,感兴趣的可以去看看。

三、并行计算与分布式计算的区别

并行计算和分布式计算既有区别也有联系。从解决对象上看,两者都是大任务化为小任务,这是他们共同之处。 具体区别和联系如下表所示:


项目

并行计算

分布式计算


 

相同点

* 都是运用并行来获得更高性能计算,把大任务分为N个小任务
* 都属于高性能计算(High Performance Computing,HPC)的范畴
* 主要目的都是在于对大数据的分析与处理

 

 







时效性

强调

不强调


独立性

弱,小任务计算结果决定最终计算结果

强,小任务计算结果一般不影响最终结果


任务包之间关系

关系密切

相互独立


每个节点任务

必要,并且时间同步

不必要,时间没有限制


节点通讯

必须

不必须,甚至可以无网络


应用的场合

海量数据处理

模式类穷举法


如上表所示,并行计算的传统目的是提供单处理器无法提供的性能(处理器能力或存储器);因此,它的目的是使用多处理器求解单个问题。而分布式计算的目的主要是提供方便,这种方便包括可用性、可靠性以及物理的分布(能从许多不同场所访问分布式系统)。
在并行计算中,处理器间的交互一般很频繁,往往具有细粒度和低开销的特征,并且被认为是可靠的。而在分布式计算中,处理器间的交互不频繁,交互特征是粗粒度,并且被认为是不可靠的。并行计算注重短的执行时间,分布式计算则注重长的正常运行时间。

结语


并行计算、分布式计算以及网格计算和云计算都是属于高性能计算(HPC)的范畴,主要目的在于对大数据的分析与处理,但它们却存在很多差异。我们需要了解两者的原理、特点和运用的场合,对云计算的了解大有裨益。