並行計算概念以及示例


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM