High performance parallel computation

by vitamin on 11月 6, 2005

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

我们通常所用的大部分计算机程序都是串行的,一个任务(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之间的数据传递。潦草说这些,以后再补充吧。

6 comments

by 656 on 2011/09/09 at 14:28. 回复 #

Leave your comment

Required.

Required. Not published.

If you have one.