来自麻省理工学院的工程师开发了一个新的系统,让程序员识别其代码的部分,可以容忍一点错误,确定要分配给不可靠的硬件组件的程序指令,以最大化节能,同时仍然满足程序员的准确性要求。
随着晶体管变小,它们也变得不那么可靠。增加其工作电压可以提供帮助,但这意味着电力消耗的相应增加。
随着信息技术消耗稳步增长的世界能源供应,一些研究人员和硬件制造商正在探索只需让芯片偶尔计算的可能性。在许多流行的应用中 - 视频渲染,例如 - 用户可能不会注意到差异,并且可以显着提高能效。
在今年的面向对象的编程,系统,语言和应用程序(OOPSLA)会议上,MIT计算机科学和人工智能实验室的研究人员提出了一个新系统,让程序员识别其代码的部分,可以容忍一点错误。然后,系统确定要分配到不可靠的硬件组件的程序指令,以最大限度地节省能量节省,同时仍然满足程序员的准确性要求。
系统称为Chisel,还具有一个工具,帮助程序员精确评估他们的程序可以容忍多少错误。如果呈现图像中的1%的像素,则用户会注意到吗?达到2%,或5%?凿子将在不可靠的硬件上模拟图像渲染算法的执行,因为程序员请求多次,具有许多不同的错误率。这需要猜测确定准确性要求。
研究人员使用从研究文献中剔除的一系列不可靠的硬件模型来测试他们的系统。在仿真中,由此产生的省电范围为9%至19%。
累积结果
新的工作在去年oospla呈现的一篇文章中建立了一份称为依赖的编程语言。每篇论文赢得了会议的最佳纸张奖项之一。
依赖于指定准确性要求的机制,它具有运算符 - 一个时段或点 - 表示可以在不可靠的硬件上执行特定指令。在去年呈现的工作中,程序员必须手动插入圆点。凿子自动插入 - 并保证其作业将最大化节能。
“我们以前所有研究的一项观察结果通常,我们分析的计算大部分时间都在一个或多个真正计算得密集的功能上,”电气工程学和计算机科学研究生和计算机科学研究生Sasa Misailovic说在新论文上的领导作者。“我们称之为这些计算'内核,我们专注于它们。”
Misailovic是由Ids顾问(Martin Rinard)的电气工程和计算机科学系(EECS)教授的顾问加入论文;由Sara Achour和Zichao Qi,他也是Rinard群体的学生;由迈克尔·纳尔滨,他与Rinard博士学位,将于明年加入EECS教师。
在实践中,Misailovic说,程序通常只有几个内核。原则上,凿子本来可能会自动找到它们。但是,大多数工作高性能代码的开发人员可能希望维持对他们的节目在做什么的控制度,Rinard说。通常,他们已经使用工具使内核识别容易。
组合爆炸
然而,单个内核可能仍然包含100个或更多指令,可以将其组合分配给不可靠的硬件。手动浏览所有可能的组合,并评估它们对计算准确性和节能的影响仍然是一个令人难以耗时的任务。
但研究人员开发了三种单独的数学表达式,描述了描述的准确性,指令执行的可靠性,节能作为inpidual指令的功能。这些表达式限制了搜索系统必须执行以确定分配给不可靠硬件的指令。那简单 - 尽管仍然复杂 - 问题是现成软件可以处理的问题。
“我认为华盛顿大学计算机科学与工程副教授Luis Ceze说,这是辉煌的工作。“所有趋势都指向未来的硬件不可靠,因为这是使其更节能和更快的一种方式。”
然而,CEZE指出,使用MIT研究人员所使用的硬件模型要求规范执行inpidual操作的可靠性。“这限制了你可以从近似的节省,”Ceze说。“我相信近似粗糙的植物。你在一次拍摄时做了一大堆操作。在性能和能源效率改进方面,这可以从数十%到数十增加[倍数]。“
至于麻省理工学院研究人员的工作是否可以适应适应这样的模型,“可以完成,”Ceze说。“事实上,我的小组在不同的背景下做了类似的工作。所以这绝对是可行的。“
PDF纸本副本:凿:近似计算内核的可靠性和准确性感知优化
图像:荷西-路易斯·奥利瓦雷斯/麻省理工学院