专栏名称: 哲学园
哲学是爱智慧, 爱智慧乃是对心灵的驯化。 这里是理念的在场、诗意的栖居地。 关注哲学园,认识你自己。
目录
相关文章推荐
哲学王  ·  我们培养的人才是:证书等身、学问全无 ·  17 小时前  
哲学王  ·  七大经典心理学效应,教你越活越智慧 ·  2 天前  
哲学王  ·  黑暗中的笑声:苏东坡和他的精神世界 ·  3 天前  
51好读  ›  专栏  ›  哲学园

多核的陷阱:从程序的角度探讨计算机的极限

哲学园  · 公众号  · 哲学  · 2017-08-22 07:00

正文

请到「今天看啥」查看全文



于是学术界和工业开始了又一波对并行化的研究。他们一部分人希望通过 设计新的编程语言 ,让程序员人工提高程序的并行度。另一部分人则希望通过 对编译器的优化 ,让编译器自动识别程序中可并行的部分并生成可并行的二进制码。然而双方的成效都非常有限。 可并行的编程语言需要程序员有并行的编程思想 ,然而这多多少少有违人类本身的逻辑思维方式。同时,并行语言为程序调试带来了很大的挑战。使得大规模的并行程序开发变得相当困难。与此同时, 编译器能在程序中找到的可并行部分也相当有限 ,这也使得自动并行化的效率非常之低。


这么看来多核芯片真的是一个好的决定吗?程序的并行极限又在哪里呢?要解释这个问题,我们便不得不提到计算机科学界的另一个经验法则—— 阿姆达尔定律


阿姆达尔定律于1967年由IBM360系列机的主要设计者吉因恩·阿姆达尔 (Gene Amdahl) 首先提出。 它代表了处理器并行运算之后效率提升的能力 。该定律首先将一个程序分成了可并行和不可并行两部分,并指出程序中对某一部份进行并行后所能获得的系统性能改进程度,取决于并行部分被使用的频率,或所占总执行时间的比例。换句话说, 在并行计算中用多核处理器对单个程序的加速受限于该程序所需的串行时间百分比。 比如一个程序中如果有一半是不能被并行的,那么即便是有无限核数的处理器,该程序能得到的最大加速比也只是两倍。


阿姆达尔定律给出了下面这一个核心公式, speedup=1/(s+(1-s)/n) 。该公式计算了一个程序并行化之后所能带来的最大加速比。其中 s 为程序串行部分 (或不可并行部分) 所占比例;1-s 则为程序可并行部分所占比例;n为并行处理节点的个数,可以大致理解为处理器的核数。所以如果一整个程序都是可并行的 (s = 0)







请到「今天看啥」查看全文