0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习预测计算机芯片执行来自各种应用程序的代码的运行速度

倩倩 来源:量子认知 2020-01-16 08:13 次阅读

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

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

编译器使用该信息来自动优化代码,而开发人员使用该信息来解决将运行该代码的微处理器的性能瓶颈。但是,机器代码的性能模型是由相对较少的专家小组手写的,并且未经适当验证。结果,模拟的性能测量通常会偏离实际结果。

研究人员开发了一种新颖的机器学习管道,该管道可自动执行此过程,从而使其变得更轻松、更快、更准确。这项研究成果在国际机器学习大会上发表。

研究人员通过一种特殊的神经网络模型,它以“基本块”(计算指令的基本摘要)形式训练标记的数据,以自动预测其持续时间使用给定的芯片执行以前看不见的基本块。结果表明,这种神经网络模型的性能要比传统的手动调整模型精确得多。

这个基准测试套件涉及多个领域,包括机器学习、编译器、密码学和可用于验证性能模型的图形。研究人员将超过30万已分析的块合并到一个开源数据集中。在评估过程中,这种神经网络模型预测了英特尔芯片运行代码的速度要比英特尔自身构建的性能模型还要好。

最终,开发人员和编译器可以使用该工具来生成代码,这些代码可以在越来越多的多样化“黑匣子”芯片设计上更快、更高效地运行。现代计算机处理器不透明,极其复杂且难以理解。编写对这些处理器执行得尽可能快的计算机代码也极具挑战性,该工具是朝着对这些芯片的性能进行完全建模以提高效率的重要一步。

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

LLVM是业界常用的编译器,一个自由软件项目,它是一种编译器基础设施,以C++写成,包含一系列模块化的编译器组件和工具链,用来开发编译器前端和后端。它是为了任意一种编程语言而写成的程序,利用虚拟技术创造出编译时期、链接时期、运行时期以及“闲置时期”的最优化。它最早以C/C++为实现对象,而当前它已支持许多种程序语言。

研究人员说,手工设计性能模型可能是“一门妖术”。英特尔提供了超过3000页的详尽文档,描述了其芯片的体系结构。但是目前只有一小部分专家将构建性能模型,以模拟这些架构上代码的执行。

研究人员指出:“英特尔的文档既没有错误,也没有完整,并且英特尔会省略某些事情,因为它是专有的。” “但是,当使用数据时,不需要了解文档。如果有隐藏的内容,可以直接从数据中学习。”

为此,研究人员记录了给定微处理器用于计算基本块指令的平均周期数,基本上是启动,执行和关闭的顺序,而无需人工干预。使过程自动化可以快速分析成千上万个块。

在培训学习中,这种神经网络模型分析了数百万个自动剖析的基本块,以准确了解不同的芯片体系结构将如何执行计算。重要的是,该模型将原始文本作为输入,不需要手动向输入数据添加功能。在测试中,可以将以前看不见的基本块和给定的芯片提供给模型,模型将生成一个数字,指示芯片将以多快的速度执行该代码。

研究人员发现,该模型的准确性降低了错误率,这意味着预测速度与实际速度之间的差异比传统的手工模型降低了50%。此外,他们表明该模型的错误率为10%,而Intel性能预测模型在多个不同领域的各种基本块上的错误率为20%。

该工具现在使人们可以更轻松地快速了解任何新芯片架构的性能速度。例如,特定领域的体系结构,例如Google专门用于神经网络的新型Tensor处理单元,目前正在构建中,但并未得到广泛理解。 如果要在某种新架构上训练模型,只需从该架构收集更多数据,通过探查器运行它,使用该信息来训练模型,从而就有了一个预测性能的模型。

接下来,研究人员将通过这样的神经网络模型研究使人工智能模型可解释的方法。人工智能机器学习在很大程度上是一个黑匣子,因此尚不清楚为什么特定的模型会做出某种预测。这样的模型指示一个处理器要执行一个基本块需要10个周期,从而有可能设法找出其原因。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4755

    浏览量

    100445
  • 微处理器
    +关注

    关注

    11

    文章

    2246

    浏览量

    82275
  • 计算机芯片
    +关注

    关注

    0

    文章

    42

    浏览量

    3494
收藏 人收藏

    评论

    相关推荐

    计算机系统的硬件组成和主要部件

    计算机系统的硬件组成是计算机运行的基础,它包含了多个关键部件,这些部件相互协作,共同实现计算机各种功能。
    的头像 发表于 09-10 11:41 1443次阅读

    计算机进行程序控制工作的基本原理是怎样的

    计算机程序控制是计算机科学中的一个核心概念,它涉及到计算机如何根据预设的指令序列执行任务。 1. 计算机
    的头像 发表于 09-04 16:57 299次阅读

    微处理器如何控制计算机系统

    微处理器,作为计算机系统的核心部件,承担着控制整个计算机系统运行的重要任务。它不仅是计算机的运算中心,还是控制中心,负责执行程序指令、处理数
    的头像 发表于 08-22 14:21 430次阅读

    机器视觉和计算机视觉有什么区别

    机器视觉的研究目标是让机器具有类似人类的视觉能力,能够自动、准确地完成各种视觉任务。 计算机视觉 计算机视觉,又称为视觉
    的头像 发表于 07-16 10:23 450次阅读

    内存容量与类型如何影响计算机性能

    内存的容量与类型作为计算机硬件系统中的重要组成部分,对计算机的整体性能有着至关重要的影响。它们不仅决定了系统能够同时处理的数据量大小,还影响着程序运行速度、系统的响应能力以及多任务处
    的头像 发表于 07-15 18:05 1814次阅读

    计算机视觉和机器视觉区别在哪

    计算机视觉和机器视觉是两个密切相关但又有明显区别的领域。 一、定义 计算机视觉 计算机视觉是一门研究如何使计算机能够像人类一样理解和解释视觉
    的头像 发表于 07-09 09:22 388次阅读

    拜登政府启动新计划,培育美国计算机芯片人才

    在全球半导体产业竞争日益激烈的背景下,美国政府正以前所未有的决心和行动力,推动本土计算机芯片产业的发展。北京时间7月2日,拜登政府宣布了一项重要计划——劳动力伙伴联盟(Workforce
    的头像 发表于 07-02 11:40 937次阅读

    【量子计算机重构未来 | 阅读体验】+ 了解量子叠加原理

    )。通过逻辑门来执行操作二进制数据,逻辑门是一种基本电路,它可以将一个或多个输入转换为输出。逻辑门包括与门、或门、非门等等,将许许多多逻辑门组合起来就可以构建复杂的电路来执行各种操作,电子计算
    发表于 03-13 17:19

    【量子计算机重构未来 | 阅读体验】第二章关键知识点

    计算机能够减少计算和操作的繁琐程度 作者从如何提高计算机的运算速度上,提出了提高计算速度的两个方向: 加快
    发表于 03-06 23:17

    【量子计算机重构未来 | 阅读体验】+ 初识量子计算机

    欣喜收到《量子计算机——重构未来》一书,感谢电子发烧友论坛提供了一个让我了解量子计算机的机会! 自己对电子计算机有点了解,但对量子计算机真是一无所知,只是听说过量子纠缠、超快的运算
    发表于 03-05 17:37

    中国第三代自主超导量子计算机“本源悟空”上线运行

    1月6日上午9时,中国第三代自主超导量子计算机“本源悟空”,在本源量子计算科技(合肥)股份有限公司(简称本源量子)正式上线运行。图为中国第三代自主超导量子计算机“本源悟空”该量子
    的头像 发表于 01-07 08:21 761次阅读
    中国第三代自主超导量子<b class='flag-5'>计算机</b>“本源悟空”上线<b class='flag-5'>运行</b>

    单片机芯片怎么写入程序

    单片机芯片程序写入是通过将程序代码写入单片机芯片的非易失性存储器(如Flash)中实现的。 在计算机科学和电子工程领域,单片机是一种集成电
    的头像 发表于 01-05 14:06 7751次阅读

    python软件怎么运行代码

    Python是一种高级编程语言,它被广泛用于开发各种类型的应用程序,从简单的脚本到复杂的网络应用和机器学习模型。要运行Python
    的头像 发表于 11-28 16:02 846次阅读

    如何把c语言源程序变成应用程序

    的,并且通常以.c作为文件扩展名。源代码包括函数、变量和其他语句,它们被编译器翻译成机器代码,然后在计算机执行。 编写C语言源
    的头像 发表于 11-26 09:04 3323次阅读

    python怎样运行代码

    Python是一种广泛使用的编程语言,用于开发各种类型的应用程序。它具有简单易学的语法和强大的功能,可以用于编写简单的脚本、开发桌面应用、构建Web应用、进行科学计算等多种用途。在本文中,我们将详细
    的头像 发表于 11-22 10:31 1134次阅读