机器心脏报告
机器之心编辑部
如果摩尔定律注定终结,人类的计算能力会被“锁定”吗?一篇由麻省理工学院、英伟达和微软的研究人员共同撰写的科学论文告诉我们:不。
这项最新研究指出,在后摩尔定律时代,人类计算能力的提升将在更大程度上来自计算栈的“顶层”,即软件、算法和硬件架构,这将成为一个新的历史趋势。
摩尔定律终结后提高性能的方法。
计算能力的提高可以给现代生活带来很多便利。比如目前手机的功能比25年前房间大小的电脑还要强大,将近一半的人可以上网,强大的超级计算机也可以用于药物发现。人类社会已经开始依赖于随着时间呈指数增长的计算机的强大性能。
计算机性能的提升,大部分是因为几十年来计算机部件的小型化。诺贝尔物理学奖得主理查德费曼早就预见到了这一点。他在1959年对美国物理学会的演讲中提到“底部还有很大的空间”。1975年,英特尔的创始人戈登摩尔预言了这类元件的小型化趋势,即集成电路上可容纳的元件数量每18-24个月翻一番,性能也翻一番。我们称之为摩尔定律。
不幸的是,这种趋势正在消亡,因为底部已经没有多少空间了。如果计算能力的提升停滞不前,几乎所有行业的生产力都会面临挑战。
在这种背景下,来自麻省理工学院、英伟达和微软的研究人员在最新一期《Science》中发表文章指出,尽管底层没有太大的提升空间,但在顶层仍然有机会:我们都可以从软件、算法和硬件架构方面找到提高计算性能的方法。
论文链接:https://science.sciencemag.org/content/368/6495/eaam9744
软件
我们可以通过性能工程让软件更加高效,也就是通过重构软件来加快它的运行速度。性能工程可以消除程序的低效率,这就是所谓的软件膨胀,它是由传统的软件开发策略,即尽可能缩短软件开发时间而不是缩短软件运行时间造成的。性能工程还可以根据运行的硬件定制软件,比如使用并行处理器和矢量单元。
为了说明性能工程的潜在好处,让我们考虑一个简单的问题:将两个40964096矩阵相乘。首先是用Python代码实现的。在现代计算机上,这段代码需要7个小时才能完成这个矩阵乘法。如表1第一行(版本1)所示,仅达到机器峰值性能的0.0006%。
但是用Java(版本2)实现的代码速度可以提高到10.8倍,用C语言(版本3)可以提高到Java的4.4倍,运行时间比原Python版本快47倍。这种性能的提高来自于程序运行时操作次数的减少。
此外,根据硬件的特点调整矩阵乘法的代码,甚至可以提高1300倍的运行速度。这一优势来自于在18个处理内核(第4版)上并行运行代码、使用处理器的内存层次(第5版)、矢量化代码(第6版)以及使用英特尔的高级矢量扩展指令集(AVX)(第7版)。最终,代码优化的方法可以将这个任务所需的时间减少到0.41秒――比运行7小时的Python快6万倍!
值得一提的是,用Python 3做同样的事情更慢,需要9个小时。
算法
该算法为解决该问题提供了一种更有效的途径。事实上,自20世纪70年代后期以来,算法在解决最大流问题时的速度几乎与硬件的速度一样快。但现有算法中的进展是不均衡的、分散的,最终会面临收益递减的局面。因此,目前最大的收益往往来自于新问题领域(如机器学习)的算法,以及能够更好地反映新兴硬件的新理论机器模型的开发。
图1:求解顶点数n=10 12,边数m=10 1.1的图的最大流问题的主要算法进展。
图1显示了任何时候的最大流算法
间的进展。在 38 年的数据中,最佳算法的性能收益可与摩尔定律所带来的收益相媲美,尽管过去 20 年,在该问题上并没有提升性能的新算法出现。该例子重点介绍了有关算法的 3 个重要观测结果:1、在已有算法上的改进是不均匀的,而且具有偶然性;
2、算法创新得到的收益可以和摩尔定律相媲美;
3、解决任何已有的问题的算法改进最后都会进展趋缓。
尽管对于已有问题的研究仍能获得少量收益,但是算法上的大量进展将来自于以下 3 个方面:
1、进军新的问题领域;
2、解决可扩展性问题;
3、定制算法以利用当前硬件。
硬件架构
在讨论硬件架构之前,我们先来谈谈「Dennard 缩放比例定律」。
Dennard 缩放比例定律是一个鲜为人知但同样重要的观察结果,Robert Dennard 在 1974 年提出,随着晶体管变得越来越小,它们的功率密度保持不变,因此功率的使用与面积成比例;电压和电流的规模与长度成比例。
结合「摩尔定律」晶体管的数量大约每两年翻一番,这意味着效能功耗比(每消耗一瓦功率,计算机可提供的计算速率)以同样的速度增长,大约每两年翻一番。
Dennard 缩放比例定律在提出之后的 30 年后结束,原因并不是因为晶体管的尺寸不再缩小,而是因为电流和电压不能在继续下降的同时保持可靠性了。随后「多核时代」就到来了。
图 2:1985 年 - 2015 年,SPECint 性能(串行为主)、SPECint-rate 性能(并行)、微处理器时钟频率提升的情况。坐标起点为 1985 年的 Intel 80386 DX 微处理器。
上图 2 展示了微处理器的三组基准数据:首先,如图中绿点所示,从 1985 年到 2005 年,由于 Dennard 缩放比例定律的终结,时钟速度在增长了 200 倍之后趋于平缓。
在 Dennard 缩放比例定律时代,由于时钟速度提高和其他架构变化的推动,微处理器在 SPECint 和 SPECintrate 基准测试中的性能迅速提高,目的是在典型的用户工作负载上对计算机性能建模。
SPECint 基准主要由串行代码组成,SPECint-rate 基准测试则是并行的。这两个基准测试在单处理器计算机上的表现是相同的。但从 2004 年之后,由于机器添加了多个内核以及其他的显式并行机制,两者的性能出现差异。
实际上,从 2004 年到 2015 年,性能最佳的芯片上并行应用程序的性能增长了 30 倍,大概每两年就会翻一番。相比之下,同期的 SPECint 基准(灰点)仅增加了三倍。
既然设计者已经接受了并行性,主要问题就是如何简化处理器和利用应用程序的并行性。未来,两种简化策略将占据主导地位:处理器简化和领域专门化。
硬件架构是可简化的。一种是通过简化处理器,将复杂的处理核替换为晶体管数量需求更少的简单处理核。由此释放出的晶体管预算可重新分配到其他用途上,比如增加并行运行的处理核的数量,这将大幅提升可利用并行性问题的效率。
简化的另一种形式是领域专门化(domain specialization),即针对特定应用程序定制硬件。这种专门化舍弃了某一领域不需要的处理功能,同时允许针对领域进行更多的自定义,比如降低机器学习应用程序的浮点精度。
在后摩尔时代,软件、算法和硬件体系架构的性能改进越来越依靠在堆栈的各个级别上进行并发更改。从工程管理和经济的角度看,这类更改在大型系统组件中更容易实现,因为这些可重用的软件通常具有超过一百万行的代码,或者是拥有相当复杂的硬件。
如果一个组织和公司拥有此类的大型组件,通过重新设计模块度来获得性能提升是比较容易的。此外,成本和收益可以合在一起考虑,这样一来,大型组件中某一部分重要但昂贵的更改就能用该组件中其他部分的收益来弥补。
「底层」或许还有机会
在后摩尔时代,处于「底层」的制硅工艺改进将不再提供那么显著的计算机性能提升,但「顶层」的软件性能更迭、算法开发和硬件精简,将使计算机应用程序的速度更快。与曾经「底层」明显的收益不同,这些「顶层」的收益将会是参差不齐、零散且机会性的。而且,随着对特定计算方法的探索不断深入,这种边际收益将会呈现递减趋势。
当然,一些新兴技术也可能从「底层」推动发展,比如 3D 堆叠、量子计算、光子学、超导电路、神经形态计算、石墨烯芯片。这些技术目前还处于起步阶段,尚未成熟,暂时无法与基于硅的半导体技术竞争。但不可否认的是,它们的确具备长期潜力。
参考链接:https://science.sciencemag.org/content/368/6495/eaam9744