计算机学院课程设计课程名称高性能计算设计题目名称大规模并行计算专业__ 软件工程 _ __ _ 年级班别 2012级学号学生姓名指导教师联系方式2015年12月18日结构化数据访问注释对于大规模并行计算马可aldinucci1索尼亚营,2,基尔帕特里克3,和马西莫torquati2p.kilpatrick@1计算机科学系,大学都灵,意大利aldinuc@di.unito.it2比萨大学计算机科学系,意大利{营,torquati}@di.unipi。
它3女王大学计算机科学系,贝尔法斯特p.kilpatrick@摘要。
我们描述了一种方法,旨在解决的问题控制联合开发(流)和一个数据并行骨架吨并行编程环境,基于注释重构。
注解驱动一个并行计算的高效实现。
重构是用来改造相关联的骨架树到一个更高效,功能上相当于骨架树。
在大多数情况下成本模型是用来驱动的重构过程。
我们展示了如何示例用例应用程序/内核可以被优化,讨论初步的实验评估结果归属理论。
克-词:算法的骨架,并行设计模式,重构,数据并行性,成本模型。
1我新台币结构化并行程序设计方法已抽象出概念控制和数据并行通过骨骼上的[ 10 ],这是众所周知的PA T控制[ 8 ]燕鸥。
控制并行的设想,设计和实施作为一个图的节点(骨架),每个节点代表一个函数。
一股流独立的任务流经图:当每个节点的输入是有效的,它可以计算产生的输出被发送到它的连接节点。
在另一方面,数据并行的kelet的描述一个计算模式定义如何在并行数据中访问数据,并将其应用于数据的功能分区以获得最终结果。
传统上,控制之间的正交性并行和数据并行解决了采用双层模型控制流驱动的方法进行数据的并行能力增强,可能与并行数据结构暴露出集体行动[ 13 ]反之亦然。
然而,控制并行和数据并行的方法。
这项工作已经由欧盟框架7批ist-2011-288570”释义:自适应异构多核系统的并行模式”我caragiannis冯湛华。
(E DS。
):E尿PAR 2012个车间,LNCS 7640,pp. 381–390,2013。
他是cspringe r-ve rlag用IDE L B E RG 2013382米aldinucci等人。
往往缺乏有效的应用程序,在这两个问题的能力被利用,因为本质上不同的手段,通过并行表示,有时,优化。
一种高效的任务分配控制驱动的环境,可我nvalidated由糟糕的数据访问策略,反之亦然[ 14 ]。
在本文中,我们勾勒出一个新的方法来面对的控制与基于数据并行二分法的思想,即:数据与控制并行关注需要独立表达因为他们描述正交方面的并行性,和II)的数据访问和控制的并行模式的需要becoordin ED为了有效地支持并行应用的实现。
虽然利用并行模式是不是一个新的方法[ 11 ]和协调工作在过去的语言方面作出了努力[ 17,12 ]或框架,本文提出的想法是,这样的协调可以通过对控制定义的图形表示关于数据访问的骨架。
此外,我们将展示如何这样的注释可以用来驱动优化的实施图的执行。
2他骨骼框架考虑骨骼系统包括控制(即流)和数据并行骨架,造型更一般的并行开发模式。
我们的骨架是由下面的语法定义的这些骷髅代表著名的并行开发模式[ 4 ]:序列把现有的序列码,管/农场流并行骨架处理流项目和Map/Reduce是数据并行骨架加工数据的集合。
与许多骨骼框架的对比(包括SkeTo[ 16 ]、[ 9 ]和牛奶什锦早餐skepu)只考虑映射在“收藏”输入数据,我们假设一个用于P3L [ 7 ]和[ 15 ]:skandium责任指定子项建立了输入数据(集)是左应用程序的程序员,因为是规范的重新构建的部分结果集合的结果。
在P3L,程序员要求利用图的形式参数作为工人骨架的实际参数使用“星变”–一种∀我–建立变量之间的对应关系任务和子任务的数据项。
例如,矩阵乘法图可以被定义为:明星变量进行逻辑解释为所有的循环变量。
在这种情况下对内部产品工人骨架的调用,对应于伪—代码:∀我∈[ 0,1 ]∀J N−∈[ 0,1 ] n−电话(IP,一个[我] [ ] [ ] [ ],B,C [我] [ J ])虽然大规模并行计算的结构化数据访问注释383由P3L编译器可能已完全最终生产进度不同于嵌套循环中隐含的(顺序)时间序列。
当处理的集合和复杂和组成的数据结构,有一些特定的数据访问模式,借助描述每件数据合并成最终结果。
例如,一个连续的块数据在一个“行主要”内存组织中实现一个矩阵,可以是访问的行或列,每行可以加上每一列,所有的夫妇成为计算的目标和每一个输出这样的计算,在输出矩阵中的一个位置。
变种这种模式包括那些考虑每行/列耦合一个整体矩阵或子块。
另一个模式的访问是描述模板,即一块细胞在一个固定的或可变的范围在每一个项目。
一些图形处理的三角矩阵,例如,一个访问对角线或模板相对于对角线上的元素。
在我们的建议中,控制的并行性描述的组成的控制和数据并行的骨架(即计算模式),但相应的图是由一组数据访问模式,丰富的注释。
骨架型和访问模式的不同组合可以充分描述计算的发展,保证数据的正交管理和控制并行性,同时提供了一个理论平台我们可以为更好地开发资源的优化策略,带宽,服务时间,和其他性能指标。
在接下来的几年中,我们将提供一种语言来定义数据和控制的关注,我们将强调他们可以正交描述为了方便骨架重写和随后的骨架实现。
3 nnotations /元数据在美国证券交易委员会介绍的每一个骨骼。
2可增强使用各种的注释,表示为与骨架树相关联的元数据。
在特别是,我们使用的功能相关的注释(如数据访问模式)和非功能性(如性能相关)方面。
这样的注释使用下面的语法来表示:与注释相关联的非正式语义如下:pardegreeannot并行度(如果变量)公司deannot同事源与图书馆合作与连续的骨架。
R CH TY P E N N O ttarget架构在骨架必须(最好)执行(CPU / GPU异构处理单元假定)384米aldinucci等人。
dataacces的不能种对输入的数据进行访问。
这些注解部分是由用户提供的(如codeannot 的)。
另一些则直接从骨架源代码通过编译步骤(如dataaccessannot的)。
三分之一类注释可以由应用程序的程序员或自动导出的编译工具(如pardegree的)。
这里的重点是thedataaccessannot注释。
这些都是用来在美国证券交易委员会详细说明了一个骨架程序的执行。
4相对内存中的数据放置,通信和同步管理也可在可用的处理单元之间进行划分。
一般的想法是总结在图1。
所提供的骨架程序应用程序是一个编译工具(在“注释”箭头图)产生一个注释的骨架树。
这个编译工具是一种中文翻译。
注释的骨架树解析和导航的最终产生一个不同的骨架树的优化。
这个新的骨骼树可能不同的注释(例如,它具有相同的形状作为原始一,但主机不同的注释)和树的形状(例如,它的主机不同,或不同的连接,节点)。
优化阶段(“基于规则的优化”图1底部的箭头使用不同的启发式方法作为重构规则,可能确定,可能改写中,一个让最佳性能数据,根据一个给定的骨架性能模型。
作为示例,我们将展示如何抽象语法和注释系统可用于编写纯控制/流并行应用程序和数据并行的,突出的语法使用,表达能力和如何注释和参数可以支持骨架树的推理。
在美国证券交易委员会和4,我们将进一步走一步,在应用程序中使用的注释,揭露流和数据并行的关注。
控制作用P咸海莱利斯M。
一个纯控制并行骨架采用流并行只是,例如骨骼、管(SEQ(F)、农场(SEQ(G),SEQ(H))。
图2显示对应的语法树的一个可能的实例化。
SEQ骨架带注释的序列函数的路径引用。
这个农业骨骼有2个参数(工人的数量和骨架执行每一个副本),并将注明实际并行度。
具有明确的阶段作为参数。
大规模并行计算的结构化数据访问注释385 在异质结构(例如,那些提供CPU和GPU)该农场的树木可以进一步注明提供的替代品。
数据并行性。
矩阵乘法是数据并行的传统的例子,因为它可以写成一个地图的功能由连续的内部产品应用于平行于每一行的输入矩阵再加上输入矩阵的每一列的矩阵B和C单个项目的结果1。
从表达地图(SEQ(IP),在一个[我]∗[ ],[ ] B [∗],[我],[ J ]),注释的树图3-left可以导出。
注意表达∗[ ] [我]表示一个矩阵的行和访问,作为一个结果,它定义了一套块,每个代表一thoserows。
例如,考虑一个矩阵A with elements aij then A[∗i ][] = { [a11,a12,a13],[a21,a22,a23],[a31,a32,a33]} .InthecaseoftheexpressionA[][ ∗ i ]–denoting access by columns–the set willchange accordingly in A[][ ∗ i ]={ [a11,a21,a31], [a12,a22,a32],[a13,a23,a33]} . 我们在需要时,将使用集合运算符。
因此,例如,我们可以写一一个[我]⊂∗[ ]当且仅当是一个[∗] [我]的一个子集。
此外,在以下第,当这样一组的结构不相关,我们将简单地表示它由于在地图定义中的分裂或组件的作用。
因此,我们可以写地图(F,SP,一个[我] [ J ])一些SP,表示任何类型的阅读访问。
在我们的语法中,在和外都是关键字引入了映射参数,即定义拆分和组合映射策略。
386米aldinucci等人。
4 FROM离子遇到TOO PT imiz ADAT我们现在的例子中显示了抽象语法可以用来写应用程序将控制和数据的正交并行协调关注和驱动骨架重写这样一种方式,优化达到。
访问驱动优化。
假设有以下抽象描述:Pipe( Map( Seq( s 1) ,in A[∗i][] ,outA[∗i][]),Map ( Seq( s 2) ,in B [][ ∗j ] A [∗i][] ,outB[][ ∗j ])源代码的1ands 2andn×n矩阵A和B。
定义允许我们用与地图相关的信息来注释骨架树如图3所示,对。
在这个例子中,一个管由两图M1、M2。
两种访问相同的数据集(一个矩阵),并将其应用于连续级的行;m2takes也是数据集B的输入。
从[ 6,2,3 ]以下的规则:Pipe( Map( f1 ,sp 1 ,cm 1) ,Map ( f2 ,sp 2 ,cm 2)) ≡Farm( Map( Comp( f1 ,f 2) ,sp,cm))并在骨架计算序列中的两个功能。
然而,从提供了数据访问我们可以认为我)M2功能注释依赖m1since访问矩阵,用M1;我m2accesses)的用同样的政策m1to写,即访问矩阵的行和延长他输入数据的空间,通过访问矩阵。