High performance parallel computation

闲着没事,趁没睡之前随便讲讲我的本行--超表现并行运算。这玩意听起来高深邪乎的样子,但是原理很简单。“超表现”就是比普通算法快很多;“并行”就是同时用多个线程处理一个任务;“计算”,这里当然就是说用计算机来算了。

我们通常所用的大部分计算机程序都是串行的,一个任务(A)结束之后再执行下一个任务(B),然后C,假如任务B依赖于任务A所产生的结果,C也依赖于B,这只能如此,无可厚非。但是假使任务B实际上和A是同等级关系,不相互依赖,而C需要等待A和B的结果,那么B等待A就显得多余。如果可以让A,B同时进行,效率就会高许多--这就是所谓并行运算。但是我们知道,一个CPU一次只能处理一个指令,要让A和B同时进行,那就必须把A和B分配到不同的CPU上去。

举个简单的例子,我们要让计算机计算1到100之间所有整数的和,我们可以把它拆成10个任务,分配到10个CPU上去,第一个CPU算,1+2+...+10,第二个算11+12+...20,以此类推。当每个CPU都结束各自的任务之后,其中9个CPU把所得结果发送给另外那个CPU,然后这个CPU把这10个结果加起来--OK,全部任务完成。

于是我们明白,并不是任何运算都可以并行处理的,关键是你的东西要有可拆分性,可拆分才可以并行。你的算法当中,可并行的部分比重越大,那么并行的效率就越高。

并行计算大概就这么个概念,很直观和容易理解,技术瓶颈一在于如何有效拆分,二在于不同CPU之间的数据传递。潦草说这些,以后再补充吧。

Your rating: None

评论

我对这个很有兴趣,

我对这个很有兴趣,我做的量子计算里面也有并行算法。我很想了解一下经典计算机中的并行算法到底是怎么回事。期待下一篇。

我对并行计算也感兴

我对并行计算也感兴趣, 第一次听说“超表现”, 期待下面的篇章。

我们现在学Distributed

我们现在学Distributed Computing分布式运算,上周老师介绍了几个Grid项目。教Parallel Computing而言,Distributed Computing的技术问题还更多,不同操作系统,不同的CPU类型之间的信息传递等。

很有趣,我本科时是

很有趣,我本科时是做高能唯象(Phenomenology)理论计算的,也做过需要很多机时的计算,不过是x86串行。希望能有更详细的下文。

超表现并行运算?? 和

超表现并行运算??

和高性能并行计算是什么关系?

评论查看选项

选择您喜欢的显示评论的模式,并点击"保存设置"来激活您所做的改变。

发表新评论

此内容将保密,不会被其他人看见。