广州市乐趣网络有限公司
首页 | 联系方式 | 加入收藏 | 设为首页 | 手机站

产品目录

联系方式

联系人:业务部
电话: 00132-123456
邮箱:service@zhengfengdq.com

当前位置:首页 >> 产品展示 >> 默认分类 >> 正文

并行计算与分布式处理的区别

详细信息:

一、一些概念

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集中式处理系统:
某种处理任务被集中到一个处理单元上,系统为星型结构,一般只有一个核心处理单元;即使核心处理单元有双机备份,也属于集中式处理系统。


2.区别

解决对象上:都是大任务化为小任务,这是他们共同之处。


分布式的任务包互相之间有独立性,上一个任务包的结果未返回或者是结果处理错误,对下一个任务包的处理几乎没有什么影响。因此,分布式的实时性要求不高,而且允许存在计算错误(因为每个计算任务给好几个参与者计算,上传结果到服务器后要比较结果,然后对结果差异大的进行验证)


分布式要处理的问题一般是基于“寻找”模式的。所谓的“寻找”,就相当于穷举法!为了尝试到每一个可能存在的结果,一般从0~N( 某一数值)被一个一个的测试,直到我们找到所要求的结果。事实上,为了易于一次性探测到正确的结果,我们假设结果是以某个特殊形式开始的。在这种类型的搜索里,我们也许幸运的一开始就找到答案;也许不够走运以至于到最后才找到答案,这都很公平。


然而,并行程序并行处理的任务包之间有很大的联系,而且并行计算的每一个任务块都是必要的,没有浪费的分割的,就是每个任务包都要处理,而且计算结果相互影响,就要求每个的计算结果要绝对正确,而且在时间上要尽量做到同步,而分布式的很多任务块可以根本就不处理,有大量的无用数据块,所以说分布式计算的速度尽管很快,但是真正的“效率”是低之再低 的,可能一直在寻找,但是永远都找不到,也可能一开始就找到了;而并行处理不同,它的任务包个数相对有限,在一个有限的时间应该是可能完成的。


分布式计算提出了一个让工作站端能够在后台持许工作的方法,而用户完全不需关心任何东西。这种实现基于两个原则,其一是任务连续分配和空闲优先权,其二是写一个屏幕保护程序。现在的调度程序已经不错了,而空闲优先任务将在人们完全不用关心任何东西的情况下自动执行。利用屏幕保护程序可以利用计算机闲置的时间计算工作任务。



三、技术范畴


分布式的编写一般用的是C++(也有用JAVA的,但是都不是主流),基本不用MPI接口。


并行计算用MPI或者OpenMP。

软件开发技术:
(1)系统层面 -> 集中式处理系统 - 对象是一个处理单元
-> 包含一个处理器 -> 并发计算,调度优化
-> 并行计算之指令优化(特例)
-> 包含多个处理器 -> 并行计算

-> 分布式处理系统 - 对象是多个处理单元
-> 任务的数量分解,数量空间扩展;
-> 任务的功能分解,功能空间扩展;

(2)算法层面 -> 一个处理器
-> 并发计算
-> 分时调度 -> 新就绪的高优先级任务
-> 可抢占
-> 不可抢占,如Linux进程的核心态
-> 新就绪的低优先级任务
-> 预留时间片,保证调度,延迟可预知
-> 多任务调度 -> 新就绪的高优先级任务
-> 可抢占
-> 不可抢占
-> 新就绪的低优先级任务
-> 不保证及时调度,延迟不可预知
-> 多个处理器
-> 并行计算
-> 并行算法
-> 空间复用多个处理器的算法专题,略
-> 并行调度
-> 新就绪的高优先级任务->优先分配到空闲的处理器
-> 新就绪的低优先级任务->负荷分担分配到各个处理器

3、多内核CPU的技术展望
多内核CPU -> 一个处理单元
-> 包含多个处理器 -> 并行计算 -> 并行算法 -> ...
-> 并行调度 -> ...
-> 虚拟机技术 -> 分布式处理系统
-> 多个处理单元
-> 任务的数量分解,数量空间扩展;
-> 任务的功能分解,功能空间扩展。

未来多核CPU的不同内核,如果赋予不同的功能,则更加容易组织成一个强大的分布式处理系统,规避了软件开发在并行计算方面的困难。