程序员们终于可以歇歇,喝杯咖啡了

编码员需要数月才能完成的工作,麻省理工学院计算机科学及人工智能实验室(CSAIL)的“Helium”系统仅需要一个小时即可完成。

此文由MIT Technology Review 中国大陆地区独家授权,未经授权严禁转载。更多精彩内容请搜索官方微信“mit-tr”,同我们一道关注即将商业化的技术创新,分享即将资本化的技术创业。

去年,麻省理工学院的计算机科学家和Adobe公司的工程师试图合作解决一个许多公司面临的重大问题:数据腐坏。

Adobe公司大获成功的图片编辑器Photoshop就是一个很好的例子,该软件刚刚庆祝了它的第25个生日。这些年来,Photoshop积累了大量的代码,并对现在的旧硬件进行了优化。

“必须优化软件中用于图像处理的高性能代码,”麻省理工学院教授兼计算机科学与人工智能实验室(CSAIL)研究员萨曼·阿马拉辛哈(SamanAmarasinghe)认为,“但不利的一面是代码变得更加低效和更加难以理解了。”

这导致了阿马拉辛哈所谓的“十亿美元问题”。像Adobe这样的公司必须每隔几年便将大量的人力投入到代码修复中,并且需要手工测试各种不同的策略以试图对其进行修复。

这个名为Helium的计算机程序能够帮助解决计算领域的“十亿美元问题”:很多公司不得不投入大量时间和精力用手工的方式修复老代码

但假如存在一个可以自动修复旧代码的计算机程序,从而使工程师们能够专注于设计新软件等更加重要的工作,那么情况又会如何呢?

Helium是一种不需要原始来源即可在数小时甚至数分钟之内修复和调整代码的CSAIL系统。

该团队从简单却又极难分析的构建模块编程着手:已精简调试符号的二进制代码,这是唯一可用于Photoshop等专用软件的代码片段。

一种常用于此类软件的特殊计算内核类型是“模板内核”,它可以使你对整个范围内的像素进行操作。模板内核对更新来说尤其重要,因为它们占用了大量内存和计算能力,当有新硬件可用时,它们的性能退化十分迅速。

利用Helium,研究人员能够将这些内核从精简二进制中分离出来,并将其重组为Halide可读的高级表述。Halide是CSAIL设计的一种面向图像处理的编程语言。

从二进制到高级语言是一个巨大的飞跃,根据主要作者查理斯·美迪斯(Charith Mendis)所述,团队最初并不承认其可行性。

“这些优化后的二进制运算次序非常复杂,这意味着它们很难被解开,”CSAIL的研究生美迪斯说道,“因为模板一遍又一遍地重复同样的计算,所以我们可以积累足够的数据来恢复原始算法。”

然后,Helium系统就此用优化后的组件取代原始的数据腐坏部分。最终结果:Helium能够将某些Photoshop过滤器的性能提高75%,并且将 Microsoft Windows’IrfanView等未优化项目的性能提高400%至500%。

“我们发现,Helium可以在一天之内完成更新,而人类工程师则需要至少三个月才能完成。”阿马拉辛哈说道,“这样的系统可以帮助企业确保下一代的代码会更快,并免去了需要为此投入100个人的麻烦。”

这项研究是计算机协会编程语言专业组(SIGPLAN)于6月13至17日在俄勒冈州波特兰市举办的编程语言设计与实现大会(PLDI2015)上的一篇论文提出的。

该论文的作者为美迪斯及其研究生同学杰弗瑞·勃姆(Jeffrey Bosboom)和吴凯文(Kevin Wu)、研究科学家修艾布·卡米尔(Shoaib Kamil)、博士后乔纳森·拉根-凯利、博士阿马拉辛哈、以及Adobe公司和Google公司的研究人员。

“我们正处于一个计算机体系结构以惊人速度改变的时代,所以编写出适用于多个平台的代码至关重要。”犹他大学计算机学院的玛丽·霍尔教授认为,“Helium是一种很有意义的方式,它有可能促进模板计算的更高层次表述,从而更容易运用到将来的体系结构中。”

这项工作还有一个让人意想不到的额外作用,那就是让研究人员看到了程序员处理旧代码时使用的不同技巧,就好像考古学家在梳理计算化石。

“我们可以看到工程师用来优化算法的‘数据技巧’,” 阿马拉辛哈说道。“也可以更好地理解程序员如何应对不同编码挑战的大背景。”

官方微信公众号mit-tr:

热门文章HOT NEWS