為什么會出現並行計算:
從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次加法。
這樣就可以提升很多了。