分布式计算和并行计算的异同

时间:2023-02-04 08:08:45

分布式计算和并行计算的异同(转)

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

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

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

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

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

分布式的编写一般用的是C++(也有用JAVA的,但是都是娱乐性质的项目了,不是主流),基本不用MPI接口。并行计算用MPI或者OpenMP。如果把网格计算算做分布式计算(网格计算是分布式计算的一种特例,但是有区别,区别仅仅在编程方法和实际应用的范围上),网格计算使用中间件!而且对联网的各台计算机的操作系统的要求比较特殊。