并行计算概念以及示例
为什么会出现并行计算:
从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次加法。
这样就可以提升很多了。