当前位置:首页>科技 >内容

并行计算和分布式计算的区别和联系是什么_并行计算和分布式计算的区别和联系

2024-05-18 21:28:48科技漂亮的斑马

一、什么是并行计算?并行计算或并行计算是相对于串行计算而言的。所谓并行计算,可以分为时间并行和空间并行。时间并行是指流水线技术,空

并行计算和分布式计算的区别和联系是什么_并行计算和分布式计算的区别和联系

一、什么是并行计算?并行计算或并行计算是相对于串行计算而言的。所谓并行计算,可以分为时间并行和空间并行。时间并行是指流水线技术,空间并行是指多个处理器同时执行计算。

并行计算是指利用多种计算资源解决计算问题的过程。为了执行并行计算,计算资源应该包括具有多个处理器(并行处理)的计算机、连接到网络的特定于计算机的数量,或者两者都包括。并行计算的主要目的是快速解决大型复杂的计算问题。

并行计算有三个基本条件:(1)并行计算机。并行计算机包含至少两个或更多处理器,这些处理器通过互联网互连并相互通信。

(2)应用题一定要有并行性。也就是说,一个应用程序可以分解成多个子任务,这些子任务可以并行执行。将应用程序分解成多个子任务的过程称为并行算法的设计。

(3)并行编程。在并行计算机提供的并行编程环境中,实现并行算法,编译运行并行程序,从而达到并行解决应用问题的目的。

并行计算的特点:(1)将工作分成离散的部分,有助于同时解决问题;

(2)随时、及时执行多条程序指令;

(3)使用多个计算资源解决问题比使用单个计算资源花费更少的时间。

二、什么是分布式计算?所谓分布式计算,就是两个或两个以上的软件互相共享信息。这些软件可以在同一台计算机上运行,也可以在通过网络连接的多台计算机上运行。

分布式计算的优势1、稀有资源可以共享。

2、分布式计算可以平衡多台计算机上的计算负载。

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

分布式计算的基本原理:让我们来看看最简单的分布式计算模型:

在传统方法中,调用对象的函数很简单:只需创建对象并调用其函数。在分布式环境中,对象在另一个进程中,完全在不同的地址空间中,所以调用它的函数可能有点困难。

再看传统C/S模式的请求模式。客户端通过网络将参数发送给服务器,服务器根据参数要求完成相应的服务,然后将结果返回给客户端。当客户机得到结果时,一个请求就完成了。从这个角度来看,调用远程对象似乎并不难。问题是这种方式在网络中并不透明,每个细节都要自己处理,非常复杂。

简化软件设计,当然网络运行是透明的,调用方和实现方都不需要关心网络运行。为此,我们可以通过以下方式来实现:

应该在客户端引入代理对象。它有全权代理实际对象,调用方甚至不知道它是代理,可以像调用本地对象一样调用这个对象。当调用者调用代理函数时,代理并不做实际的操作,而是将这些参数封装成一个网络数据包,并将这个数据包通过网络发送给服务器。

服务器中引入了一个存根对象。存根收到代理发送的数据包后,将数据包解包,重新组织成一个参数列表,用这些参数调用实际对象的函数。实际对象执行相关操作并将结果返回给Stub,然后Stub将结果打包成网络数据包,并通过网络将数据包发送给客户端的代理。

代理收到结果包后,会将包解包为一个返回值,并将其返回给调用者。至此,整个操作完成。怎么样?简化一下。

代理隐藏了客户端的网络操作,存根隐藏了服务器的网络操作,实现了网络透明。你可能会说一点简化都没有,但是网络运行是孤立的,实现代理和存根还是一样的麻烦。

没错。但如果仔细研究Proxy和Stub的作用,就会发现这些操作对于不同的对象来说都是大同小异的,无非就是打包和解包,单调重复。单调重复的事情一定有规律可循。如果有规则可循,可以用代码生成器自动生成代码。

像DCOM和CORBA一样,确实如此。首先用IDL语言描述对象的接口,然后由IDL编译器自动生成代理和存根代码。整个过程完全不需要开发者操心。

打包和解包的技术术语叫编组和解组,中文一般翻译成列集和散集。但是这两个词太专业了,翻译成中文后更加混乱。我觉得用打包和解包这两个词比较通俗。

在上面的模型中,调用对象的方法确实使网络变得透明。读者可能会问,如果要访问对象的属性,应该怎么做?对象的属性是变量,变量是内存区,而内存区在不同的进程中是完全独立的,这似乎真的是个问题。还记得很多关于软件设计的书上说的:不要暴露对象的属性,调用方要通过get/set方法访问对象的属性。这不行吗?对属性的访问被转换成对对象方法的调用。

好了,调用对象的方法和访问对象的属性都解决了。另一个重点是如何创建对象。因为实际物体在机器上不是固定的,所以它的位置可能是动态的。甚至代理本身都不知道Stub在哪里运行。如果您希望调用者指定它,创建对象的过程还没有达到网络透明性。通常的做法是引入第三方中介,这个中介是固定的,可以通过一定的方法找到。第三方中介负责连接客户端的代理和服务器的存根。第三方中介通常有两种:一种是只负责帮客户端找服务器,然后客户端直接和服务器沟通。另一个不仅负责查找服务器,还负责转发所有请求。

上面的模型还不完整,因为真实的物体并不总是处于被动地位。但在一定条件下,会主动触发一些事件,并报告给调用者。换句话说,这是一个双向动作,简单的C/S模式满足不了要求,应该采用P2P的方式。原始客户端也作为服务器存在,并接受来自其自己的服务器的请求。就像在COM中,客户端要注册一个对象的事件,就必须实现一个IDispatch接口,依次调用对象。

当你自己意识到的时候,你要考虑以下几点:

1.传输抽象层。分发可以是跨进程或跨机器的。在不同的情况下,采用不同的沟通方式,表现会有所不同。做一个传输抽象层是一个很好的设计,可以在不同的情况下选择不同的传输方式。

2.文本仍然是二进制的。把数据打包成文本还是二进制?打包成文本的好处是可移植,容易调试,因为人们可以理解。缺点是速度有点慢,打包的数据大小会明显增大。使用二进制的好处是速度快,打包后的数据大小和打包前差别不大。缺点是不容易调试,可移植性差。

3.字节顺序和字节对齐。如果以二进制方式传输,可移植性是个问题。因为不同机器上的字节顺序和字节对齐有一些差异,所以应该将这些指令添加到数据包中,以提高可移植性。

三、并行计算与分布式计算的区别1、应用于不同的场合,解决不同的问题。分布式计算倾向于在计算中寻找模式,列举暴力等计算。分布式计算分解后,小任务相互独立,节点之间的结果几乎互不影响,所以对实时性要求不高。另一方面,并行计算倾向于一些分析和处理海量数据的场合。每个节点的每个任务块都是必须的,计算结果相互影响,这就要求每个节点的计算结果都要绝对正确,并且在时间上同步。比如像MD5破解,更适合使用大规模分布式计算,但是更适合并行计算处理海量日志数据来分析用户行为。

2、的实现就大不一样了。分布式计算将是一种松散的结构,而并行计算是节点之间通过高速网络或其他总线的连接。因此,并行计算一般在企业内部进行,而分布式计算可能跨越局域网或者直接部署在互联网上,节点之间几乎不进行通信。很多公益项目都是通过分布式计算在互联网上实现的,比如旨在寻找外星人的SETI项目。

声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们

Top