說說你對阿姆達爾定律的瞭解?

    阿姆達爾定律是用來表示處理器平行運算後效率提高的能力。T(N)=B + (T-B)/N 其中B爲不可平行運算的時間,T爲運算須要的總時間,N爲線程或者CPU數,那麼T(N)爲並行因子爲N時的執行時間的總時間。算法

 

參考資料:緩存

阿姆達爾定律網絡

雖然阿姆達爾定律容許你並行化一個算法的理論加速比,可是不要過分依賴這樣的計算。在實際場景中,當你優化或並行化一個算法時,能夠有不少的因子能夠被考慮進來。優化

內存的速度,CPU緩存,磁盤,網卡等可能都是一個限制因子。若是一個算法的最新版本是並行化的,可是致使了大量的CPU緩存浪費,你可能不會再使用x N個CPU來得到x N的指望加速。若是你的內存總線(memory bus),磁盤,網卡或者網絡鏈接都處於高負載狀態,也是同樣的狀況。線程

咱們的建議是,使用阿姆達爾定律定律來指導咱們優化程序,而不是用來測量優化帶來的實際加速比。記住,有時候一個高度串行化的算法賽過一個並行化的算法,由於串行化版本不須要進行協調管理(上下文切換),並且一個單個的CPU在底層硬件工做(CPU管道、CPU緩存等)上的一致性可能更好。內存

相關文章
相關標籤/搜索