本月累计签到次数:

今天获取 积分

0

最新发布的编程语言Milk,是什么?有什么改进?

   如今的计算机程序更多地是在大型数据集中离散地获取一点点数据。由于从主要内存位中获取数据已成了当下芯片的最大性能瓶颈,所以不得不更加频繁地获取数据,这也明显拖慢了程序运行的速度。不过现在出现了一种新的编程语言——Milk,它能让应用程序开发者在处理大数据集里的离散数据点问题中更有效率地管理内存。Milk,是什么?有什么先进之处?
已邀请 :
1

小白123#92

赞同来自 : laputacn#94

  局部思考(Thinking locally)
  当下的计算机芯片并没有专门针对稀疏数据进行优化,而且可以说是完全相反。因为从芯片的主要内存位读取数据是缓慢的,当下的芯片中每个内核或者每个处理器都有自己的“缓存”,一个相关的小型、本地、高速的内存位。芯片中的内核会一次读取一个完整的数据块,而不是在主内存中每次提取一个单独的数据。而读取的数据块是通过局部性原理来进行选择的。
 Milk改善了这个功能
0

laputacn#94

赞同来自 :

  批处理(Batch processing)
 Milk简单地增加了一些命令到OpenMP中,其中OpenMP 是一种能够用在C或Fortran等语言中的扩展,可以用来更轻松地为多核处理器编写代码。使用Milk的话,程序员可以在任何指令附近插入几行代码,其可以在整个大数据集中进行迭代,寻找相对较少数量的项。Milk 的编译器(将高级代码转换成低级指令的程序)可以据此找到管理内存的方法。
  使用 Milk 程序时,如果一个内核发现它需要一项数据时,它并不会请求从主内存中读取它(以及相邻的数据)。它会将该数据的地址添加到一个本地存储的地址列表中。当这个列表足够长时:
  芯片所有内核将会池化(pool)它们的列表
  将这些地址按临近排布的形式组合到一起
  重新分配给内核
  这样一来,每个内核都只请求了自己所需要的数据项,并且可以有效地进行检索。
  这样描述的话层级较高,但实际上细节会复杂得多。事实上大部分现代计算机芯片都有多级缓存,且一级比一级大(但效率也因此更低)。Milk编译器不仅必须跟踪内存地址表,还要跟踪这些地址中存储的数据,而且它常常将这两者在各级缓存之间进行切换。它也必须决定哪些地址应当被保留(可能需要再次访问),哪些应当被丢弃。研究学者希望能够进一步提升这种编排复杂数据的算法,从而进一步提升性能表现。
0

Luck冬冬

赞同来自 :

      当下许多重要的应用都是数据密集型的,但不幸的是,内存和CPU之间的性能差距越来越大,这意味着当前的硬件还没有发挥出它们的全部潜力。」斯坦福大学计算机科学助理教授 Matei Zaharia 说,「Milk 通过优化常见编程架构中的内存访问来帮助解决这一差距。这项成果结合了内存控制器设计的详细知识和相关编译器的知识,能为当前的硬件实现良好的优化。」

要回复问题请先登录注册