机器学习工具预测计算机芯片上代码的速度

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

通过罗伯·马西森 2020年1月16日

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

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

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

研究人员描述了一种机器学习管道,可以使这一过程自动化,使其更容易、更快、更准确。Ithemal是一种神经网络模型,它以“基本块”(计算指令的基本片段)的形式对标记数据进行训练,以自动预测给定芯片执行以前未见过的基本块所需的时间。结果表明,Ithemal的表现要比传统的手动调整模型准确得多。

研究人员还展示了一套来自不同领域的基本模块的基准测试套件,包括机器学习、编译器、密码学和图形,可用于验证性能模型。他们将超过30万个被分析的区块汇集到一个名为BHive的开源数据集中。在他们的评估过程中,Ithemal预测了英特尔芯片运行代码的速度,甚至比英特尔自己构建的性能模型还要快。

最终,开发人员和编译器可以使用该工具生成代码,这些代码可以在数量不断增长的各种“黑匣子”芯片设计上运行得更快、更高效。“现代计算机处理器是不透明的,极其复杂,难以理解。为这些处理器编写执行速度尽可能快的计算机代码也是非常具有挑战性的,”合著者迈克尔·卡宾说,他是电气工程与计算机科学系(EECS)的助理教授,也是计算机科学与人工智能实验室(CSAIL)的研究员。“这个工具是朝着全面模拟这些芯片的性能以提高效率迈出的一大步。”

该团队还提出了一种自动生成编译器优化的新技术。具体来说,它们会自动生成一种名为Vemal的算法,将某些代码转换为可用于并行计算的向量。Vemal优于LLVM编译器中使用的手工矢量化算法。

从数据中学习

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

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

为了做到这一点,研究人员记录了一个给定的微处理器在没有人为干预的情况下计算基本块指令(基本上是启动、执行和关闭的顺序)所需的平均周期数。自动化过程可以快速分析数十万或数百万个块。

特定领域的架构

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

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

Mendis说,该工具现在可以更容易地快速了解任何新芯片架构的性能速度。例如,特定领域的架构,如谷歌专门用于神经网络的新张量处理单元(Tensor Processing Unit),目前正在建设中,但尚未被广泛理解。

Mendis说:“如果你想在某些新架构上训练一个模型,你只需要从该架构收集更多数据,通过我们的分析器运行它,使用这些信息来训练imthemal,现在你就有了一个预测性能的模型。”

接下来,研究人员正在研究使模型具有可解释性的方法。大部分机器学习都是一个黑盒子,所以我们并不清楚为什么一个特定的模型会做出预测。

“我们的模型显示,处理器需要10个周期来执行一个基本块。现在,我们正试图找出原因。”“这是一个精细的粒度级别,对于这些类型的工具来说将是惊人的。”

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

麻省理工学院(MIT)

www.mit.edu

-副主编Chris Vavra编辑控制工程、CFE媒体与技术、cvavra@cfemedia.com。查看更多控制工程工业PC故事


作者简介:作者,麻省理工学院新闻办公室