说说你对阿姆达尔定律的了解?

    阿姆达尔定律是用来表示处理器平行运算后效率提高的能力。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缓存等)上的一致性可能更好。内存

相关文章
相关标签/搜索