网站大量收购独家精品文档,联系QQ:2885784924

一种多数据信息动态访问的数据变换框架.docxVIP

一种多数据信息动态访问的数据变换框架.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种多数据信息动态访问的数据变换框架 1 研究结论与讨论 在并行系统中,通过全面开发和更新编程界面,我们可以提高和行程序的访问特性,提高和行程序的执行效率。因此,提高数据访问的局部性问题是当前平行编译优化研究的重点之一。提高数据访问的局部性主要有两种方法。这是程序变换和数据交换。之前的研究主要集中在程序变用上。通过交换迭代空间来提高数据访问的局部性。例如,单个模式和非个别模式的迭代空间变换、循环特征、循环组合、循环分布等。然而,与数据变换相比,程序变用具有一定的局限性。首先,程序变用的合法性必须受到数据相关因素的限制,但数据交换不受影响。其次,程序变用将影响对嵌入矩阵中所有阵列访问的局部性,但数据变换仅影响特定阵列中的局部性。最后,程序变用很难平滑耦合的嵌套环和显示平行程序,但数据变换可以在多个情况下优化序列访问。基于以上原因,许多研究人员在数据转换方面进行了研究。然而,大多数研究人员在模仿事件的背景下进行了优化,而优化方法相对复杂,一些数据变换的类型限制了特定的不足。在这之后,我们将对他们的工作进行简短的评论和比较。 本文探讨了用数据变换来改善数据访问局部性的本质,提出了一种新的优化数据访问的投影分层技术以及基于它的数据变换框架.该框架的理论基础是空间解析几何,它首先将数据访问轨迹参数化,然后求出数据访问轨迹的空间解析方程,最后通过投影分层技术来提高数据访问轨迹的空间局部性.在这种方法中,我们利用投影技术来优化数据访问的空间局部性,利用数据分层技术来解决因投影而带来的数据重叠问题.为了讨论方便,我们将数组下标分为类仿射下标和复杂下标(具体定义见第2节),并分别讨论了对它们的优化方法.我们所提出的数据变换框架具有如下几个优点: (1)不仅能处理仿射数组下标,而且还能处理许多非仿射的更复杂的数组下标. (2)通过使用数据访问轨迹的参数方程,很简便地确定了数据元素的最优存储布局. (3)确定数据变换矩阵的方法简单、直接. (4)尽量减小了变换后的数组访问间距. 最后,我们通过对一组基准程序的测试验证了本文所提出的基于投影分层技术的数据变换框架的有效性. 本文第2节描述了本文要使用的一些基本概念和术语;第3节叙述了数据访问轨迹以及求解它的方法;第4节通过了一个例子来引出我们所提出的投影分层技术以及基于它的数据变换框架;第5节说明了如何利用我们所提出的数据变换框架来优化具有类仿射下标数组的空间局部性;第6节推广了我们所提出的投影分层技术以及基于它的数据变换框架,并用它来优化具有某些复杂下标数组的空间局部性;第7节给出了实验结果;第8节简短地叙述了相关工作;第9节总结了全文. 2 个数下标的确定 一个n重嵌套循环的迭代空间可以被看作是一个在n维空间里的多面体,其中的每个点可由一个n×1的列向量表示,即Ι=(i1,i2,?,in)Τ.其中,ik代表循环索引变量,并且i1代表最外层循环索引变量,in代表最内层循环索引变量.循环i的上下界分别用ui和li表示.同样,程序中所定义的每个m维数组也定义了一个在m维空间里的多面体,即数据空间,且多面体的每个点代表了一个数组元素. 本文中我们主要考虑通过数据变换来使得在对嵌套循环中的数组进行访问时,最内层循环能获得最大的空间局部性.因为这类空间局部性在循环中是最重要的.为了便于讨论,我们将数组下标分为两种,一种为类仿射下标,另一种为复杂下标.类仿射下标包含了仿射下标,具体定义如下. 定义1. 如果数组每维的下标都具有c(i1,i2,…,in-1)+ain的形式,其中n为循环嵌套重数,i1,i2,…,in为循环索引变量,a为整数,c(i1,i2,…,in-1)为由i1,i2,…,in-1所构成的函数(若n=1,则c(i1,i2,…,in-1)为常数),那么我们称该数组的下标为类仿射下标. 类仿射下标以外的数组下标我们都统称为复杂下标. 在下面的讨论中,为了简便,我们约定用n表示迭代空间的维数,用m表示数组空间的维数,并用X1,X2,…,Xm表示数据空间的坐标轴,且从左至右,X1,X2,…,Xm分别对应数组的第一维直至数组的最后一维. 3 不全为零的数的确定 程序执行时,循环索引变量在不断地变化,存取着数据空间中的数组元素,从而形成数据访问轨迹.给定一个数组A,我们可以很容易地确定它被访问的数据轨迹的参数方程,即 {x1=f1(i1,i2,?,in)?xm=fm(i1,i2,?,in)(1) 其中,函数fi为数组A中第i维的下标表达式.利用上述参数方程,通过将i1,i2,…,in-1看作常数而消去in,我们就有可能得到一个包含i1,i2,…,in-1的空间解析方程,它代表了数组A被访问的数据轨迹.对于类仿射下标,我们总可以求出数组被访问的数据轨迹的空间解析方程.如果一个数组的下标为类仿射下标,那么它被访

文档评论(0)

186****7870 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档