并行计算概念以及示例

为什么会出现并行计算:
      从1986-2002年这期间,微处理器的速度平均每年增长50%。但是自从2003年以后,微处理器的速度跌落到了以每年20%的速度增长。而使用单核计算的话,速度是可以跟上去,但是单核产生的热量会越来越多,风扇技术不能处理产生热量的速度。这样处理大规模的任务的时候,不能依赖一个超强的单核,那么解决的办法是什么呢。就是采用多核。多核的话可以保证在原来的处理器技术至上,将大的任务分割,将分割成的小任务放在处理器上执行。每个处理器其实有很多核(Core)的,每个核每次只能执行一个任务。现在有些计算机的处理器是采用多核多线程,为了简单方便。我们在这里就采用多核,每个核是单线程。
 
举例说明多线程的优势
 
计算1,4,3,9,2,8,5,1,1,5,2,7,2,5,0,4,1,8,6,5,1,2,3,9 这24个数字相加的和。
 
采用单核计算:
1 + 4 + 3 + ...+3+9  = 95
一共要进行23次加法
 
采用八核:
平均每个核计算24/8 = 3 个数字的和
这24个数字被分为了8组:

1,4,3,   9,2,8,    5,1,1,   5,2,7,   2,5,0,   4,1,8,   6,5,1,   2,3,9

0
1
2
3
4
5
6
7
8
19
7
15
7
13
12
14
将每个核的结果分别放到master(即第0个核)进行计算:
8 + 19 + 7 + 15 + 7 + 13 + 12 + 14 = 95

 

这样所有的任务中,master核是执行时间最长的,要执行9次加法操作。其中执行的7次操作是将其他核的结果加起来。
 
看到这里,八核计算应该还有更加快的算法。那么我们将上面的算法优化一下:
第0个核计算第0核和第1核结果的和,第2核计算第3核和第2核结果的和...
然后按照这个模式再计算剩下的步骤的结果。
在这种算法中,master核还是执行的时间最长,一共是执行了6次加法。其中3次是计算和其他核的结果的和。比上面的又快了。
 
分析:
如果我们有1000个核的话,第一种算法(第一个八核算法)会要求master核接受999次结果,并且计算999次加法。
而采用第二种算法,master核只需要10次结果,并且计算10次加法。
这样就可以提升很多了。

 

posted @ 2015-03-25 16:11  马七风  阅读(3463)  评论(0编辑  收藏  举报