本篇文章1926字,读完约5分钟

简介:本周,麻省理工学院发布了一种新的编程语言milk,就大数据而言,它可以实现比现有语言快四倍的处理速度。

MIT最新发布编程语言Milk 加速大数据时代并行运算

在今天的计算机芯片中,内存管理是基于计算机科学家所说的局部性原则:

如果一个程序需要某个存储单元中的数据块,它也可能需要数据块附近的数据。

MIT最新发布编程语言Milk 加速大数据时代并行运算

但是在大数据时代,这个假设不再有效。如今,计算机程序更有可能在大型数据集中离散地获得一点点数据。由于从主存位获取数据已经成为当前芯片最大的性能瓶颈,因此有必要更加频繁地获取数据,这明显降低了程序的运行速度。

MIT最新发布编程语言Milk 加速大数据时代并行运算

在本周举行的并行架构和编译技术国际会议上,麻省理工学院计算机科学和人工智能实验室(csail)的研究人员发布了一种新的编程语言——milk,它使应用程序开发人员能够在处理大型数据集中的离散数据点时更有效地管理内存。

MIT最新发布编程语言Milk 加速大数据时代并行运算

通过测试几种常见的算法,用新语言编写的程序比现有的编程语言快4倍。但是研究人员相信进一步的研究可以取得更好的结果。

MIT最新发布编程语言Milk 加速大数据时代并行运算

电子工程和计算机科学教授Saman amarasinghe说,大数据集给现有的内存管理技术带来问题的原因不仅是因为它们的巨大规模,还因为它们是稀疏的。也就是说,问题解决方案的规模不一定与问题的规模成正比。

MIT最新发布编程语言Milk 加速大数据时代并行运算

"在社会环境中,我们通常倾向于关注较小的问题。"阿马拉辛哈说:“如果你只注意这种建筑里的人,你会发现我们都是朋友。”但是如果你从地球的角度来看,朋友的数量不会增加。地球上有数十亿人,但我只有几百个朋友。这是一个明显的稀疏问题。”

MIT最新发布编程语言Milk 加速大数据时代并行运算

Amarasinghe还提到,一家网上书店可能会向1000名顾客提供20本最受欢迎的书。但是当顾客数量增加到100万时,它不会相应地提供最受欢迎的20,000本书的列表。

MIT最新发布编程语言Milk 加速大数据时代并行运算

局部思考今天的计算机芯片并不是专门为稀疏数据而优化的,可以说是相反的。因为从芯片的主存储器位读取数据很慢,所以当前芯片中的每个内核或处理器都有自己的“高速缓存”,即一个相关的小型、本地和高速存储器位。芯片中的内核将一次读取一个完整的数据块,而不是一次从主存储器中获取一个数据。并且根据局部性原则选择读取的数据块。

MIT最新发布编程语言Milk 加速大数据时代并行运算

通过图像处理的例子可以很容易地看出局部性原则的本质:

如果程序的目的是对图像应用视觉过滤器,并且它一次只作用于图像的一个数据块。然后,每当芯片内核请求一个数据块时,它应该接收其缓存可以接受的所有相邻数据块。因此,它可以逐块处理,并且不能获取更多的数据。

MIT最新发布编程语言Milk 加速大数据时代并行运算

然而,如果这个算法的兴趣是网上书店的200万个数据库中的20本书,这个方法将不再适用。如果它请求与某本书相邻的数据,很可能100本相邻书的数据是不相关的。

MIT最新发布编程语言Milk 加速大数据时代并行运算

这篇论文的第一作者弗拉基米尔·基里延斯基提到,一次只能从主存中读取一个数据是非常低效的

MIT最新发布编程语言Milk 加速大数据时代并行运算

就像每次你想要一勺食物,你需要打开冰箱,打开牛奶盒,倒出一勺牛奶,盖上牛奶盒,然后把它放回冰箱。

MIT最新发布编程语言Milk 加速大数据时代并行运算

他是电子工程和计算机科学的博士生。阿玛拉辛格和张运明是他论文的合作者,张也是电子工程和计算机科学的博士生。

MIT最新发布编程语言Milk 加速大数据时代并行运算

批处理)牛奶只是给openmp添加了一些命令。Openmp是一个可以在c或fortran中使用的扩展,可以用来更容易地为多核处理器编写代码。使用milk,程序员可以在任何指令附近插入几行代码,这样就可以遍历整个大数据集,找到相对较少的项目。米尔克的编译器(一个将高级代码转换成低级指令的程序)可以找到管理内存的方法。

MIT最新发布编程语言Milk 加速大数据时代并行运算

当使用milk程序时,如果内核发现它需要一段数据,它将不会请求从主存中读取它(和相邻的数据)。它将数据的地址添加到本地存储的地址列表中。当这个列表足够长的时候,

MIT最新发布编程语言Milk 加速大数据时代并行运算

芯片的所有核心将汇集它们的列表

以相邻排列的形式组合这些地址

重新分配给内核

这样,每个内核只请求它需要的数据项,并且可以有效地检索它们。

这样,层次就高了,但实际上细节会复杂得多。事实上,大多数现代计算机芯片都有多级高速缓存,第一级比第一级大(但效率较低)。Milk编译器不仅必须跟踪内存地址表,还必须跟踪存储在这些地址中的数据,并且它经常在不同级别的缓存之间切换这两者。它还必须决定哪些地址应该保留(哪些可能需要再次访问),哪些应该丢弃。研究人员希望进一步改进这种用于排列复杂数据的算法,从而进一步提高性能。

MIT最新发布编程语言Milk 加速大数据时代并行运算

“目前,许多重要的应用程序都是数据密集型的,但不幸的是,内存和cpu之间的性能差距越来越大,这意味着当前的硬件没有充分发挥其潜力。斯坦福大学计算机科学助理教授Matei zaharia说:“milk通过优化通用编程架构中的内存访问来帮助解决这个问题。”这一成果结合了内存控制器设计的详细知识和相关编译器的知识,能够很好地优化当前的硬件。ゥ

MIT最新发布编程语言Milk 加速大数据时代并行运算

附言:这篇文章是雷锋独家编辑的。搜索“雷锋”。com "公开号),并拒绝未经许可转载!

MIT最新发布编程语言Milk 加速大数据时代并行运算

通过mit

来源:罗盘报中文网

标题:MIT最新发布编程语言Milk 加速大数据时代并行运算

地址:http://www.lzn4.com/lpbxw/11239.html