设为首页 - 加入收藏
广告 1000x90
您的当前位置:9号彩票app下载 > 并行计算 > 正文

麻省理工学院的研究人员帮助简化了程序员向并行编程的过渡

来源:未知 编辑:admin 时间:2019-04-13

  1995年,一台好的计算机芯片的时钟速度约为100兆赫兹。七年后,在2002年,一台好的计算机芯片的时钟速度约为3千兆赫 - 增加了30倍。现在,七年之后,一台好的计算机芯片的时钟速度仍然高达三千兆赫兹。

  四五年前,芯片制造商意识到他们无法使芯片速度更快,因此他们采用了一种增加计算机功能的新策略:在每个芯片上放置多个“核心”或处理单元。理论上,具有两个并联工作的内核芯片可以实现两个内核芯片的两倍。但是软件开发人员倾向于将他们的程序视为顺序指令列表,并且他们在利用并行处理的方式分解这些指令时遇到了麻烦。计算机科学与工程教授Saman Amarasinghe和他在麻省理工学院计算机科学与人工智能实验室的同事正在帮助他们。

  过去,计算机科学研究人员曾希望顺序程序可以自动转换为并行程序。Amarasinghe说:“我花了很多时间努力做到这一点。” 但Amarasinghe现在得出结论:“如果你想获得并行性能,你必须开始编写并行代码。” 他认为,在高层次上,程序员需要指定他们的程序执行哪些任务可以同时运行。

  Amarasinghe说:“只是写任何平行并不意味着它会快速运行。” “很多并行程序实际上会运行得更慢,因为你将错误的地方并行化了。” Amarasinghe认为,确定何时并行化以及分配哪些核心是计算机可以自动完成的任务。

  Amarasinghe将他的团队在多核计算方面的工作分为两类:缓解程序员向并行编程过渡的工具,以及在转换完成后提高程序性能的工具。

  第一组工具解决了并行编程的主要困难之一:如果将多个任务分配给单独的核心,则无法确定哪个任务将首先完成。大多数时候,这不是问题。但偶尔,不同的核心必须访问相同的资源 - 例如,更新相同的存储值,或者将数据发送到监视器。根据哪个核心首先到达资源,程序的行为可能会完全不同。即使给出完全相同的输入,多核程序也可能不会以完全相同的方式连续两次执行。

  对于试图调试程序的开发人员来说,这是一场噩梦。为了发现错误,开发人员一遍又一遍地运行他们的程序,将问题本地化到更小的代码块。但是,除非程序的其余部分以完全相同的方式运行,否则这些变体不会传达任何有用的信息。

  Amarasinghe和他的研究生Marek Olszewski和Jason Ansel设计了一个系统,使多核程序更具可预测性。当核心尝试访问共享资源时,它的优先级不是基于其请求的时间,而是基于其执行的指令数量。在并行程序执行期间的任何时候,任何两个内核都将执行大约相同数量的指令。但是,如果一个核心必须在计算机内存的远端部分访问一个很少使用的值,那么它可能会略微落后。在这些情况下,研究人员的系统使它有机会赶上。一旦达到相同的指令计数,如果它没有为共享资源发出更高优先级的请求,则授予第一个核心的请求。

  当然,等待这意味着整个程序运行速度会更慢。但在实验中,研究人员确定,平均而言,他们系统的软件实现仅使程序执行时间增加了约16%。对于开发人员来说,为可靠的调试付出的代价很小。此外,如果将指令计数的能力内置于核心本身,则系统将更加高效。事实上,英特尔 - 已经在贸易展览会上展示了八核芯片 - 正在与Amarasinghe谈论资助该系统的进一步研究。

  “很多其他人都有这种替代方法,”加州大学伯克利分校并行计算实验室副教授Krste Asanovic说。“你只是运行它[并行程序]然而它运行,然后尝试记录它做了什么,然后你可以回去重播它。” 但是对于麻省理工学院的系统,他说,“你不必担心记录它的执行方式,因为当你执行它时,它总会以同样的方式运行。所以它比重放更加强大。”

  Amarasinghe的实验室有两个项目适合他的第二个类别 - 优化并行程序性能的工具。第一个涉及流媒体应用程序,例如通过Web进行视频广播。在您的计算机可以显示互联网视频之前,它需要执行一系列解码步骤 - 将数据流分成并行信号,执行不同类型的解压缩和颜色校正,重新组合信号,执行运动补偿,均衡信号等等上。传统上,Amarasinghe说,视频软件将获取一大块传入数据,通过所有这些解码步骤,然后获取下一个块。

  Amarasinghe说,这种方法浪费了信号处理电路固有的并行性。当一个数据块退出每个解码步骤时,下一个数据块可能正在进入它。StreamIt是由Amarasinghe的小组开发的一种语言,它允许程序员指定步骤的顺序,但自动确定何时向每个步骤传递多少数据。

  Amarasinghe说:“如果您有某种规范文档,它们都是用框图编写的”,它们将信号处理路径描述为一系列连续步骤。“当他们写[编程语言] C时,你就会失去那些障碍。” 相比之下,StreamIt“非常接近原始思维,”Amarasinghe说。

  “其他人已经讨论过流编程,但StreamIt确实将所有内容整合到一个语言和编译器工具链中,这样人们就可以实际编写流媒体程序,”Asanovic说。“所以我认为随后的语言设计和编译器工具链非常有影响力。”

  该小组的其他并行计算项目帮助计划随时适应不断变化的条件。通常,Amarasinghe解释说,程序员有几种方法来处理特定任务。例如,存在许多用于对数据进行排序的常用算法,其具有诸如快速排序,插入排序,基数排序等的名称。但算法在不同情况下的表现不同。Amaksinghe说,Quicksort通常是最好的选择,但不是“当数据非常小时”。但是,对于庞大的数据集,基数排序可能比快速排序更好。

  当算法被分配给不同的核时,这种可变性变得复杂。所以Amarasinghe的小组设计了另一种语言,要求开发人员指定四种或五种不同的方法来执行给定的计算任务。程序运行时,计算机会自动识别最有效的方法。

  似乎这种方法会导致程序膨胀。但Amarasinghe指出,当一个典型的程序执行时,它会存储更多的内存来存储数据,而不是存储指令。“有点类似于五行代码,它们可以处理具有数十亿个元素的数组。因此,制作五行代码25并不是一个大问题,”他说。

  它确实需要程序员的一些额外工作。但是“没有免费的午餐:你无法通过无所事事获得好的多核表现,”Amarasinghe说。“相信我,我们已经尝试了50年。”

  免责声明:本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。

  对于Verge读者来说翻新的Google Pixel 3s和Pixel 3 XL比以往任何时候都便宜

本文链接:http://1763inn.com/bingxingjisuan/230.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top