Posted on 2009-09-10 12:04
Fox 閱讀(6305)
評論(0) 編輯 收藏 引用 所屬分類:
T技術碎語
本文同步自游戲人生
周偉明老師應該是多核計算領域的老人了。
這幾日因為想找找無鎖(lock-free)方面的信息,就打開了周老師的blog。看到多核系統中三種典型鎖競爭的加速比分析這篇文章時,覺得老師強調多核計算效率是有必要的,但拿Amdahl 定律和Gustafson定律作對比有點不恰當。
按照我的理解,這兩個定律所刻畫的內容是完全一致的,只是對加速比的定義不一樣罷了。這里,我們都以S(n)表示n核系統對具體程序的加速比,K表示串行部分計算時間比例。
Amdahl 定律的加速比:S(n) = 使用1個處理器的串行計算時間 / 使用n個處理器的并行計算時間
S(n) = 1/(K+(1-K)/n) = n/(1+(n-1)K)
Gustafson定律的加速比:S(n) = 使用n個處理器的并行計算量 / 使用1個處理器的串行計算量
S(n) = K+(1-K)n
通俗的講,Amdahl 定律將工作量看作1,有n核也只能分擔1-K的工作量;而Gustafson定律則將單核工作量看作1,有n核,就可以增加n(1-K)的工作量。
這兩個計算公式都沒有將鎖開銷考慮在內,是理想化的。周老師提到設計不當造成并行變串行的問題與這兩個公式計算無關。因為任何多核計算都存在對串行和并行的設計考量,這正是程序員在使用多核并行時最關心的事情。
總之,二者的區別只在于態度的不同:一個消極悲觀,一個積極樂觀,充其量是一個冷笑話,而于多核計算沒有任何關聯。
我說這些也與多核計算沒有關聯,絲毫沒有質疑多核效率的意思。相反,我期待能夠通過技術層面提高多核的有效負載。
最后一句題外話,周老師使用Word的水平一般:所有來自Word的截圖都是在頁面視圖直接截,換行符和光標隨處可見。