图像处理 并行计算算和分布式处理的区别

并行计算与分布计算的区别
1. 什么是并行计算
并行计算(Parallel
Computing)是指在并行计算机上,将一个应用分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,并行地执行子任务,从而达到加快求解速度,或者提高求解应用问题规模的目的。
2. 并行计算必须具备的3个基本条件
(1)并行计算机。并行计算机至少包含两台或两台以上处理机,这此处理机通过互联网络相互连接,相互通信。
(2)应用问题必须具有并行度。也就是说,应用可以分解为多个子任务,这些子任务可以并行地执行。将一个应用分解为多个子任务的过程,称为并行算法的设计。
(3)并行编程。在并行计算机提供的并行编程环境上,具体实现并行算法,编制并行程序并运行该程序,从而达到并行求解应用问题的目的。
3. 并行计算与分布计算的区别
并行计算不同于分布式计算(Distributed
Computing)。后者主要是指,通过网络相互连接的两个以上的处理机相互协调、各自执行相互依赖的不同应用,从而达到协调资源访问,提高资源使用效率的目的。但是,它无法达到并行计算所倡导的加快求解同一个应用的速度,或者提高求解同一个应用的问题规模的目的。对于一些复杂应用系统,分布式计算与并行计算通常相互配合,既要通过分布式计算协调不同应用之间的关系,又要通过并行计算提高求解单个应用的能力。
下面给出并行计算和分布式计算的几个例子,以示区别。
(并行计算)N个数被分布存储在P台处理器,P台处理器并行执行N个数的累加和。首先,各个处理器累加它们各自拥有的局部数据,得到累加和;然后,P台处理器执行全局通信操作,累加所有部分和,得到全局累加和。
例2 (分布式计算)观众点播、远程驾驭式可视化、电视会议等。
---摘自《并行计算导论》张林波著
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)一、一些概念
1.1 物理处理器:
一个单核CPU,多核CPU的某个内核,都是一个物理处理器;
1.2 逻辑处理器:
通过超线程技术可以将一个物理处理器模拟成多个逻辑处理器,
超线程技术的目的是提高物理处理器的利用效率,开销是模拟的多个逻辑处理器在工作切换时,有不少的数据保存和恢复工作,因此实际处理性能的提升要弱于多核CPU的多个物理处理器;双核CPU的两个物理处理器,通过超线程技术也可以模拟成四个逻辑处理器,但随着多内核CPU的物理处理器数量增多,就不必使用开销较大的超线程技术了。为避免概念混淆,后续描述中若无特别指明,处理器都是指物理处理器,不再讨论超线程技术。
1.3 并行计算
并行计算或称平行计算是相对于串行计算来说的。
所谓并行计算可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程。
为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。
1.3分布式计算
分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
分布式计算项目已经被用于使用世界各地成千上万位志愿者的计算机的闲置计算能力,通过因特网,您可以分析来自外太空的电讯号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命;您可以寻找超过1000万位数字的梅森质数;您也可以寻找并发现对抗艾滋病病毒的更为有效的药物。这些项目都很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的。
所谓分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。
分布式计算比起其它算法具有以下几个优点:
1、稀有资源可以共享。
2、通过分布式计算可以在多台计算机上平衡计算负载。
3、可以把程序放在最适合运行它的计算机上。其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。
1.4处理单元:
一个独立的软/硬件系统,可以是一台PC,或者一个虚拟机系统;
1.5分布式处理系统:
某种处理任务被分解到多个处理器上,系统为扁平结构,一般上层有一个控制中心,下层有多个处理单元,通过下层多个处理单元的数量/功能扩展,来提高整个系统的处理性能;
处理任务有两种分解方法:一种是同类处理任务的分解,属于数量扩展;另一种是按功能不同进行分解,属于功能扩展;两种分解方法一般都混合使用。
1.6集中式处理系统:
某种处理任务被集中到一个处理单元上,系统为星型结构,一般只有一个核心处理单元;即使核心处理单元有双机备份,也属于集中式处理系统。
解决对象上:都是大任务化为小任务,这是他们共同之处。分布式的任务包互相之间有独立性,上一个任务包的结果未返回或者是结果处理错误,对下一个任务包的处理几乎没有什么影响。因此,分布式的实时性要求不高,而且允许存在计算错误(因为每个计算任务给好几个参与者计算,上传结果到服务器后要比较结果,然后对结果差异大的进行验证)
分布式要处理的问题一般是基于“寻找”模式的。所谓的“寻找”,就相当于穷举法!为了尝试到每一个可能存在的结果,一般从0~N( 某一数值)被一个一个的测试,直到我们找到所要求的结果。事实上,为了易于一次性探测到正确的结果,我们假设结果是以某个特殊形式开始的。在这种类型的搜索里,我们也许幸运的一开始就找到答案;也许不够走运以至于到最后才找到答案,这都很公平。
然而,并行程序并行处理的任务包之间有很大的联系,而且并行计算的每一个任务块都是必要的,没有浪费的分割的,就是每个任务包都要处理,而且计算结果相互影响,就要求每个的计算结果要绝对正确,而且在时间上要尽量做到同步,而分布式的很多任务块可以根本就不处理,有大量的无用数据块,所以说分布式计算的速度尽管很快,但是真正的“效率”是低之再低 的,可能一直在寻找,但是永远都找不到,也可能一开始就找到了;而并行处理不同,它的任务包个数相对有限,在一个有限的时间应该是可能完成的。
分布式计算提出了一个让工作站端能够在后台持许工作的方法,而用户完全不需关心任何东西。这种实现基于两个原则,其一是任务连续分配和空闲优先权,其二是写一个屏幕保护程序。现在的调度程序已经不错了,而空闲优先任务将在人们完全不用关心任何东西的情况下自动执行。利用屏幕保护程序可以利用计算机闲置的时间计算工作任务。
三、技术范畴
分布式的编写一般用的是C++(也有用JAVA的,但是都不是主流),基本不用MPI接口。
并行计算用MPI或者OpenMP。
软件开发技术:
(1)系统层面 -& 集中式处理系统 - 对象是一个处理单元
-& 包含一个处理器 -& 并发计算,调度优化
-& 并行计算之指令优化(特例)
-& 包含多个处理器 -& 并行计算
-& 分布式处理系统 - 对象是多个处理单元
-& 任务的数量分解,数量空间扩展;
-& 任务的功能分解,功能空间扩展;
(2)算法层面 -& 一个处理器
-& 并发计算
-& 分时调度 -& 新就绪的高优先级任务
-& 不可抢占,如Linux进程的核心态
-& 新就绪的低优先级任务
-& 预留时间片,保证调度,延迟可预知
-& 多任务调度 -& 新就绪的高优先级任务
-& 不可抢占
-& 新就绪的低优先级任务
-& 不保证及时调度,延迟不可预知
-& 多个处理器
-& 并行计算
-& 并行算法
-& 空间复用多个处理器的算法专题,略
-& 并行调度
-& 新就绪的高优先级任务-&优先分配到空闲的处理器
-& 新就绪的低优先级任务-&负荷分担分配到各个处理器
3、多内核CPU的技术展望
多内核CPU -& 一个处理单元
-& 包含多个处理器 -& 并行计算 -& 并行算法 -& ...
-& 并行调度 -& ...
-& 虚拟机技术 -& 分布式处理系统
-& 多个处理单元
-& 任务的数量分解,数量空间扩展;
-& 任务的功能分解,功能空间扩展。
未来多核CPU的不同内核,如果赋予不同的功能,则更加容易组织成一个强大的分布式处理系统,规避了软件开发在并行计算方面的困难。
文章:28篇
阅读:14420
文章:16篇
阅读:26398
文章:10篇
阅读:329518被浏览3,671分享邀请回答132 条评论分享收藏感谢收起博客分类:
& 周末抽空看了看分布式计算和并行计算方面的东西,主要是搞清楚了这两个东西的相似点和区别,随便记录几句。相似点很简单,都是为了实现比较复杂的任务,将大的任务分解成小的任务,在多台计算机上同时计算。麻烦的是他们的区别,可能主要是以下几点吧,不太肯定。
&&&&& 首先,应用的场合和解决的问题不一样。分布式计算比较倾向于在计算寻找模式的东西,穷举暴力之类的计算。分布式的计算被分解后的小任务互相之间有独立性,节点之间的结果几乎不互相影响,实时性要求不高。而并行计算则比较倾向于一些海量数据进行分析处理的场合,每个节点的每一个任务块都是必要的,计算的结果相互影响,要求每个节点的计算结果要绝对正确,并且在时间上做到同步。举例来说,像MD5破解,就比较适合使用大规模的分布式计算来穷举,但对海量日志数据进行处理来分析用户行为就比较适合并行计算处理。
&&&&& 其次,实现方式区别比较大。分布式计算会是一个比较松散的结构,并行计算则是各节点之间通过高速网络或其它总线之类的东西连接。因此并行计算一般在企业内部进行,而分布式计算可能会跨越局域网,或者直接部署在互联网上,节点之间几乎不互相通信。很多公益性的项目,就是的使用分布式计算的方式在互联网上实现,比如以寻找外星人为目的的SETI项目。
&&&&& 理解得未必对,先记录下来,慢慢看。
liuweihong47java
浏览: 9611 次
来自: 北京
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 分布式并行计算框架 的文章

 

随机推荐