分类
麻省理工学院新闻

工具可以预测代码在芯片上的运行速度

机器学习系统应该使开发人员能够在各种应用程序中提高计算效率。

麻省理工学院的研究人员发明了一种机器学习工具,可以预测计算机芯片执行各种应用程序代码的速度。

为了使代码尽可能快地运行,开发人员和编译器(将编程语言转换成机器可读代码的程序)通常使用性能模型,通过模拟给定的芯片架构来运行代码。

编译器使用这些信息来自动优化代码,开发人员使用这些信息来解决运行它的微处理器的性能瓶颈。但是,机器码的性能模型是由相对较少的专家手写的,并且没有得到适当的验证。因此,模拟的性能度量常常偏离真实的结果。

在一系列的会议论文中,研究人员描述了一种新型的机器学习管道,它可以自动化这个过程,使其更容易、更快、更准确。在国际会议上发表的论文中机器学习6月,研究人员提出Ithemal,神经网络模型的形式,火车带安全标签的数据时“基本块”——基本的计算指令片段自动预测给定芯片需要多长时间执行先前看不见的基本块。结果表明,Ithemal比传统的手调模型执行更准确。

然后,在11月的IEEE负载特性国际研讨会上,研究人员提出了一个基准测试套件,该套件由来自不同领域的基本块组成,包括机器学习、编译器、密码学和图形,可用于验证性能模型。他们将30多万个数据块汇集到一个名为BHive的开源数据集中。在他们的评估中,Ithemal预测英特尔芯片运行代码的速度将比英特尔自己建立的性能模型还要快。

最终,开发人员和编译人员可以使用该工具生成在越来越多的不同的“黑盒”芯片设计上运行得更快、更有效的代码。“现代的计算机处理器不透明,复杂得可怕,难以理解。电子工程与计算机科学(EECS)系助理教授、计算机科学与人工智能实验室(CSAIL)研究员迈克尔•卡宾(Michael Carbin)表示:“为这些处理器编写尽可能快地执行的计算机代码也具有难以置信的挑战性。”“这个工具是朝着充分模拟这些芯片性能以提高效率的方向迈出的一大步。”

最近,在12月的NeurIPS会议上,该团队提交了一篇论文,其中提出了一种自动生成编译器优化的新技术。具体地说,它们自动生成一种称为Vemal的算法,该算法将某些代码转换成向量,用于并行计算。Vemal的性能优于LLVM编译器中使用的手工向量化算法——LLVM编译器是业界使用的一种流行的编译器。

学习数据

卡宾说,手工设计表演模型可能是一门“黑艺术”。英特尔提供了超过3000页的文档来描述其芯片的架构。但是目前只有一小部分专家会构建性能模型来模拟这些架构上的代码执行。

“英特尔的文件既不是没有错误也不完整,而且英特尔会省略某些东西,因为它是专有的,”Mendis说。然而,当你使用数据时,你不需要知道文档。如果有什么隐藏的东西,你可以直接从数据中得知。”

为此,研究人员记录了给定微处理器计算基本块指令(基本上是启动、执行和关闭的顺序)所需的平均周期数,不需要人工干预。自动化该过程可以快速地分析数十万或数百万块。

特定领域的架构

在训练中,Ithemal模型分析数百万自动分析的基本块,以准确地了解不同的芯片架构将如何执行计算。重要的是,Ithemal将原始文本作为输入,不需要手动向输入数据添加特性。在测试中,Ithemal可以被输入以前不可见的基本块和给定的芯片,并将生成一个数字,指示芯片执行代码的速度。

研究人员发现,与传统手工模型相比,Ithemal的准确率(即预测速度与实际速度之间的差异)降低了50%。此外,在他们的下一篇论文中,他们展示了Ithemal的错误率是10%,而Intel的性能预测模型在跨越多个不同领域的各种基本块上的错误率是20%。

Mendis说,该工具现在可以更容易地快速了解任何新芯片架构的性能速度。例如,领域特定的架构,如谷歌的新张量处理单元,专门用于神经网络,现在正在构建,但还没有被广泛理解。“如果你想在一些新的架构上训练一个模型,你只需要从那个架构中收集更多的数据,通过我们的分析器运行它,使用那些信息来训练Ithemal,现在你有了一个预测性能的模型,”Mendis说。

接下来,研究人员正在研究使模型可解释的方法。机器学习在很大程度上是一个黑匣子,所以我们并不清楚为什么一个特定的模型会做出预测。“我们的模型说它需要一个处理器,比如说,10个周期来执行一个基本块。现在,我们正试图找出原因,”卡宾说。“对于这类工具来说,这是一个非常好的粒度级别。”

他们还希望使用Ithemal进一步提高Vemal的性能,并自动实现更好的性能。

新闻旨在传播有益信息,英文原版地址:http://news.mit.edu/2020/tool-how-fast-code-run-chip-0106