语言在大数据问题上提供了四倍的加速

出版时间:周二,9月13日,2016—19:03 在里面数学与经济学

在当今的计算机芯片中,内存管理是基于计算机科学家所谓的位置原则:如果一个程序需要存储在某个内存位置的一大块数据徳赢手机版,它可能也需要相邻的块。但是,这种假设在大数据时代就被打破了,现在,计算机程序更频繁地只对分散在巨大数据集中的一些数据项起作用。由于从主要内存库中获取数据是当今芯片的主要性能瓶颈,必须更频繁地获取它可能会极大地降低程序的执行速度。

本周,在并行架构和编译技术国际会议上,麻省理工学院计算机科学和人工智能实验室(CSAIL)的研究人员正在展示一种新的编程语言,叫做牛奶,这使得应用程序开发人员能够在处理大型数据集中分散数据点的程序中更有效地管理内存。

在对几种常用算法的测试中,用新语言编写的程序比用现有语言编写的程序快四倍。但研究人员认为,进一步的研究将产生更大的收益。

今天的大数据集给现有的内存管理技术带来了问题,Saman Amarasinghe解释道,电气工程和计算机科学教授,不是因为它们大到计算机科学家所说的“稀疏”,也就是说,徳赢手机版有了大数据,解决方案的规模不一定随问题的规模成比例增加。

“在社交环境中,我们过去常常关注较小的问题,”阿玛拉辛奇说。“如果你看看这座(CSAIL)大楼里的人,我们都有联系。但是如果你看看行星的尺度,我不按比例计算朋友的数量。地球上有几十亿人,但我仍然只有几百个朋友。突然间你遇到了一个非常少的问题。”

同样地,Amarasinghe说,一个在线书店,说,1000名客户可能会向其访问者提供其20本最受欢迎书籍的列表。它不跟随,然而,一个拥有100万客户的在线书商希望为其访问者提供一份20000本最受欢迎书籍的列表。

本地思考

今天的计算机芯片并没有针对稀疏数据进行优化——事实上,反之亦然。因为从芯片的主存储器中获取数据很慢,每一个核心,或处理器,在现代芯片中有自己的“缓存”,一个相对较小的,本地的,高速存储器组。不是每次从主存储器中提取一个数据项,核心将获取整个数据块。而该块是根据位置原则选择的。

很容易看出地方性原则是如何运作的,说,图像处理。如果程序的目的是对图像应用视觉过滤器,它一次作用于一个图像块,然后当核心请求一个块时,它应该接收其缓存可以容纳的所有相邻块,这样它就可以一块一块地磨掉,而不需要再提取任何数据。

但如果算法只对在线零售商数据库中200万本书中的20本感兴趣,这种方法就不起作用。如果它请求与一本书相关联的数据,很可能与相邻100本书相关的数据是无关的。

每次访问一个数据项的主内存效率非常低。“好像,每次你想吃一勺谷类食品,你打开冰箱,打开牛奶盒,倒一匙牛奶,合上纸箱,把它放回冰箱里,”弗拉基米尔·基里安斯基说,电气工程和计算机科学博士生,论文第一作者。他和张云明和阿玛兰西一起,同时也是电气工程和计算机科学的博士生。

批处理

牛奶只是给OpenMP添加了一些命令,C语言和FORTRAN语言的一种扩展,使多核处理器的代码编写更容易。加牛奶,程序员在任何指令周围插入几行额外的代码,这些指令在大型数据收集中迭代,以查找相对较少的项。Milk的编译器——将高级代码转换为低级指令的程序——然后计算出如何相应地管理内存。

有了牛奶计划,当核心发现它需要一段数据时,它不会从主内存请求它——以及一个相邻数据的缓存。相反,它将数据项的地址添加到本地存储地址列表中。当列表足够长时,所有芯片的核心都汇集了它们的列表,把彼此靠近的地址分组,然后重新分配到核心。那样,每个核心只请求它知道它需要并且可以有效检索的数据项。

这就是高级描述,但细节变得更加复杂。事实上,大多数现代计算机芯片都有几个不同级别的缓存,每一个都比上一个稍大,但效率也稍低。牛奶编译器不仅要跟踪内存地址列表,还要跟踪存储在这些地址的数据,它经常在缓存级别之间来回移动。它还必须决定应该保留哪些地址,因为它们可能会再次被访问,以及要丢弃的东西。改进了编排这种复杂数据芭蕾的算法,研究人员看到了进一步提高性能的希望。

来源:麻省理工学院

分享

其他来源

更多来源 点击

最新科学通讯徳赢手机版

在您的收件箱中获取本周最新和最流行的科学新闻文章!徳赢手机版它是免费的!

看看我们的下一个项目,生物学.NET