帮软件找寻内存墙之门第二部分——以并行性换性能.pdf

帮软件找寻内存墙之门第二部分——以并行性换性能.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
帮软件找寻内存墙之门第二部分——以并行性换性能.pdf

第二届工程建设计算机应用创新论坛 帮软件找寻内存墙之门(第二部分) ——以并行性换性能 Erik Hagersten编译:邓锡银 (上海华算信息科技有限公司) 通常认为只有串行程序需要改动以便在多核系统上并行执行。然而,许多现存的并行 算法在多核系统上并行执行得也很糟糕,因为它们只是针对错误的设计参数进行了优化。 过去我们一直在努力探索最可能并行的算法,并同时尽量减少线程之间的通讯。然 而,对多核而言,线程之间的通讯开销相对便宜,因为通讯的数据驻留在被线程共享的缓存 中。同时,多核能够支持的并行线程总数受限于核数乘以每个核上运行的线程数。因而,第 三个参数:内存的使用率,对并行的多核应用变得越来越重要。 在这个系列论文的第二部分,我们对高度并行的最先进的算法与适度并行算法的行为 进行对比。在适度并行算法中,部分并行算法被对内存带宽需求较低的算法所替代。我们揭 示出,在当前的多核上,后者的性能是高度并行算法的三倍。这里总结了所采用的一些技术 和一些性能指标。关于本文所讨论的算法的详细描述,我与我的同事和乌普萨拉大学的学生 一起曾在ICS2006会议上展示过。 1.向度并仃算法 矩阵中每个元素的新值(黄色)等于它本身和其四个相邻元素的均值。矩阵的元素是逐 行更新的。图中各元素上的数字代表它们的迭代次数。每次迭代结束后会检测其收敛性, 如果不满足条件,就会再次迭代。通常在收敛前矩阵要迭代10至30次。图1a中的红色 箭头代表这个算法的数据相关性。在计算黄色数值前,它左边和上边的元素的新数值必须 要先计算出来。这种数据相关性使得原始Gauss—Seidel算法很难并行。 图1b显示了常用的红/黑变异Gauss—Seidel算法,在每次矩阵扫描中只更新间隔的 元素(红色元素的更新如图1b所示)。在第二次扫描中,再更新另外的(黑色)元素。 与原始Gauss—Seidel算法不同,这种红/黑变异算法在整个扫描中没有数据相关性,因为 任一红色元素不依赖于任何其它红色元素。换句话说,一次扫描的所有元素理论上都可以 并行更新——其并行度是N2/2。 图lc显示了2个核如何分割这一作业。这个分割机制让2个核之间的通讯保持在最少: 168 工程三维模型与虚拟现宴袁现 CoreO — 瓣,鼹,爨Corel ”4黟潦苗虢端%藩 ”#行红m% 只有在线程之间的边界元素的数值需要通讯.每次扫描.线程只需要一次同步。因此 根据对优昆算}圭旧的定义,这种红/黑变异算法接近于完美:大量的并行和极少的通讯 它却有个缺点:在多核上运行得缓慢,如图2所示。 目2自JIItGS#*&iE月cPu8#i%±m#∞自t№ s 一般情况下,6aus Seidel算法所使用的矩阵规模都很大.无法装载于多核的缓存 中,因此每次迭代要从内存中读取全部的矩阵。事实上,对红/黑变异算法而言,每次 运代不得不从内存中读取全部的矩阵两次:首次是在更新红色元素时,然后是在更新黑色 元素时。这将很快让内存带宽饱和井限制多核系统的性能表现。 2.找寻内存墙之门 对Gauss Seidel算法而言t我们町以尽量域小化内存带宽使用宰,而不是仅仅最大 化并行性n如果我们对原始Gauss Seide]算法采刷一种块机制,我们就可以在缓存中保留 一个称之为“块”的活动子矩阵,在数据从缓存中清除之前,多次重复使用这些元素。因为 原始ca…一Sei del算法的数据相关性(如图la中的红色箭头所示),我们必须引入滑块 技术,如图3a所示。红框中的话动块包括3行。一旦活动块中的所有元素的下次选代值 得到了更新,如图3a所示.活动块将下滑一行,

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档