专利名称:面向异构众核多级存储结构的数据分布与局部性优化方法
技术领域:
本发明涉及一种数据分布与局部性优化方法,特别是涉及一种面向异构众核多级存储结构的数据分布与局部性优化方法。(二)、背景技术:传统的单核处理器主要通过提高运行频率来提高性能。随着时钟频率的持续增长,单芯片集成的晶体管数越来越多,功耗和发热量呈指数上升,共同制约了处理器性能的进一步提升。于是多核技术应运而生并成为当前处理器设计的主流,与单核处理器相比,多核及众核处理器具有更加丰富的计算资源和存储资源。异构众核处理器由结构和功能相异的处理器核组成,一般采用“主处理器核(主核)+协处理器核(从核)”结构。主处理器核运行操作系统,负责任务的划分和资源的调度。协处理器核负责完成划分后的计算任务。异构众核处理器可以使用不同类型的处理器核来完成不同类型的任务,如任务并行度较高,则使用众多精简的协处理器核提速,否则用强大的通用计算主核运行。这比用相同的处理器核执行所有任务更有效率,更利于提高处理器的性能。异构众核处理器已成为学术界和工业界的研究热点,并逐步应用于需要海量计算能力和数据吞吐能力的航空航天领域、气象领域、生物领域、高难密码破译领域、信号分析等领域。异构众核处理器的主核包含有容量较大的主存和访问速度快速的cache (高速缓冲存储器),从核包含软件管理的局部数据存储器。与硬件cache相比,局部数据存储器占用的芯片面积更少,功耗更低,访问速度更快。但由于容量的限制,局部数据存储器往往无法满足包含大数组的科学计算的存储需求。大部分数据存储在主存,导致局部存储失效时,必须通过DMA操作完成主存与局部存储的数据传输。然而DMA(Direct Memory Access,直接存储器访问)操作开销较大,DMA次数过多会大大降低程序性能。因此,由程序显式控制局部存储与主存的数据传输,决定数据进入局部存储以及从局部存储写回的时机、位置和内容,成为改善局存空间利用率,发挥异构处理器性能的关键。(三)、发明内容:
本发明要解决的技术问题是:克服现有技术的缺陷,提供一种面向异构众核多级存储结构的数据分布与局部性优化方法,该方法提升了程序的执行效率。本发明的技术方案:一种面向异构众核多级存储结构的数据分布与局部性优化方法,具体为:对程序进行数据流分析,完成数据在不同类型核心的存储器之间的高效映射和布局,通过自动生成指导数据分布的相关数据管理子句,显式控制局部存储器与主存储器的数据传输,决定数据进入局部存储器以及从局部存储器写回的时机、位置和内容,优化异构众核多级存储结构的存储性能;具体含有下列步骤:步骤1:数据规模自适应的数组分块:通过自动生成数组分块子句,把程序中不同规模的大数组划分为小数组,该小数组的大小适合于运算核心中的局部存储器的容量;步骤2:数组访问模式指导的数据分布:分析小数组的访问模式,若该访问模式是规则访问,则生成带数据划分信息的数据拷贝子句,将计算所需数据截取和传输进局部存储器;若该访问模式不是规则访问,则生成缓存子句,将不规则访问的数组映射到软件cache ;步骤3:主从协作的数组转置:判断小数组下标索引变量次序和循环嵌套迭代次序是否一致,当两个次序不一致时,按循环嵌套的迭代次序对数组进行转置,通过数组转置子句使数组通过连续的数据拷贝操作从主存储器传送到从核的局部存储器,并获得与循环嵌套访问方式一致的存储方式,从而将不连续访存转换为连续访存,提高并行程序性能;步骤4:外围数据传输简化:生成加速数据区编译指示,将循环嵌套内层并行循环的数据传输子句转移到循环嵌套外层的加速数据区,仅在循环计算开始前和循环计算结束后进行数据传输,避免外层串行循环执行时内层并行循环的多次数据拷贝。步骤I中:采用动态分配的编译指导方法,在并行编译指示内插入数组分块子句,将超过局部存储器的容量限制的大数组划分为小数组,使大数组的部分数据也能由当前计算调度进入局部存储器,以利用局部存储器的快捷性加快运算功能。步骤I中:在生成数组分块子句时,采用基于贪婪策略的启发式搜索算法来获得最优的数组分块方案,该数组分块方案在把循环引用的数组装载进局部数据存储器的前提下,最大化局部数据存储器的空间的利用率,同时保证程序数据的局部性。步骤2中:通过对小数组下标表达式的分析来判断小数组的访问模式,如该访问模式是规则访问,则分析小数组的访问规律,获得小数组的划分信息,生成带数组划分信息的数据拷贝子句,由基础编译器依据数据拷贝子句将计算所需数据进行截取和传输进局部存储器。步骤4中:需要简化的外围数据传输为外层串行、内层并行的多重嵌套循环;夕卜围数据传输简化还含有对该多重嵌套循环的并行化编译过程的改善,编译系统在并行化内层循环时不添加数据传输子句,遍历完内层循环回溯到外层串行循环时添加数据区编译指示,并根据整个循环嵌套的数据流分析结果,把需要传输的变量放到数据拷贝子句、缓存子句中。本发明的有益效果:1、本 发明能够由程序显式控制局部存储器与主存储器的数据传输,决定数据进入局部存储器以及从局部存储器写回的时机、位置和内容,可以有效改善异构众核处理器局部存储器的空间利用率,优化异构众核处理器多级存储结构的存储性能,提升程序的执行效率,有效发挥了异构处理器的性能。2、本发明将优化过程分为数组分块、数据分部、数组转置以及外围数据传输简化四步,能够针对不同特征的数据多层次多粒度地优化数据的传输、存储和访问。3、本发明通过在程序中自动生成指导数据分布数据管理子句的方式控制局部存储器与主存储器的数据传输,具有良好的可读性、可扩展性和平台无关性。
:图1为面向异构众核多级存储结构的数据分布与局部性优化方法的说明示意图。
具体实施方式
:参见图1,面向异构众核多级存储结构的数据分布与局部性优化方法具体为:对程序进行数据流分析,完成数据在不同类型核心的存储器之间的高效映射和布局,通过自动生成指导数据分布的相关数据管理子句,显式控制局部存储器与主存储器的数据传输,决定数据进入局部存储器以及从局部存储器写回的时机、位置和内容,优化异构众核多级存储结构的存储性能;具体含有下列步骤:步骤1:数据规模自适应的数组分块:通过自动生成数组分块子句,把程序中不同规模的大数组划分为小数组,该小数组的大小适合于运算核心中的局部存储器的容量;步骤2:数组访问模式指导的数据分布:分析小数组的访问模式,若该访问模式是规则访问,则生成带数据划分信息的数据拷贝子句,将计算所需数据截取和传输进局部存储器;若该访问模式不是规则访问,则生成缓存子句,将不规则访问的数组映射到软件cache ;步骤3:主从协作的数组转置:判断小数组下标索引变量次序和循环嵌套迭代次序是否一致,当两个次序不一致时,按循环嵌套的迭代次序对数组进行转置,通过数组转置子句使数组通过连续的数据拷贝操作从主存储器传送到从核的局部存储器,并获得与循环嵌套访问方式一致的存储方式,从而将不连续访存转换为连续访存,提高并行程序性能;步骤4:外围数据传输简化:生成加速数据区编译指示,将循环嵌套内层并行循环的数据传输子句转移到循环嵌套外层的加速数据区,仅在循环计算开始前和循环计算结束后进行数据传输,避免外层串行循环执行时内层并行循环的多次数据拷贝。步骤I中:采用动态分配的编译指导方法,在并行编译指示内插入数组分块子句,将超过局部存储器的容量限制的大数组划分为小数组,使大数组的部分数据也能由当前计算调度进入局部存储器,以利用局部存储器的快捷性加快运算功能。步骤I中:在生成数组分块子句时,采用基于贪婪策略的启发式搜索算法来获得最优的数组分块方案,该数组分块方案在把循环引用的数组装载进局部数据存储器的前提下,最大化局部数据存储器的空间的利用率,同时保证程序数据的局部性。步骤2中:通过对小数组下标表达式的分析来判断小数组的访问模式,如该访问模式是规则访问,则分析小数组 的访问规律,获得小数组的划分信息,生成带数组划分信息的数据拷贝子句,由基础编译器依据数据拷贝子句将计算所需数据进行截取和传输进局部存储器。步骤4中:需要简化的外围数据传输为外层串行、内层并行的多重嵌套循环;夕卜围数据传输简化还含有对该多重嵌套循环的并行化编译过程的改善,编译系统在并行化内层循环时不添加数据传输子句,遍历完内层循环回溯到外层串行循环时添加数据区编译指示,并根据整个循环嵌套的数据流分析结果,把需要传输的变量放到数据拷贝子句、缓存子句中。以上步骤1-3是针对数组进行的局部性优化,步骤4是针对嵌套循环中内层并行循环做的整体性传输优化。步骤I完成的主要工作是对数据和计算进行分割,生成数组分块子句。在对数据和计算进行划分时采用了一种基于贪婪策略的启发式搜索算法来获得最优的数组分块方案。该算法求解过程为:设循环嵌套为IL1, L2, , LJ,L1为最外层循环,Ln为最内层循环,循环引用数组
ApA2.....Am,数组元素的大小为sk(l ^m)字节,数组维数为lk,局部数据存储器的大
小为M。由于各个数组的维数可能不一致,所以难以以某个数组为研究对象求出适用于所有数组的分块方案。假设数组下标表达式是循环嵌套索引变量的简单仿射函数(只有一个循环索引变量),则可以索引变量为依据,对下标包含此索引变量的数组维进行分块,块大小为did < i < Ik)。循环嵌套层h(l ≤j ≤ η)索引变量对应的分块值为Xj0最佳数组分块方案的求解问题可以建模为:
权利要求
1.一种面向异构众核多级存储结构的数据分布与局部性优化方法,其特征是:对程序进行数据流分析,完成数据在不同类型核心的存储器之间的高效映射和布局,通过自动生成指导数据分布的相关数据管理子句,显式控制局部存储器与主存储器的数据传输,决定数据进入局部存储器以及从局部存储器写回的时机、位置和内容,优化异构众核多级存储结构的存储性能;具体含有下列步骤: 步骤1:数据规模自适应的数组分块:通过自动生成数组分块子句,把程序中不同规模的大数组划分为小数组,该小数组的大小适合于运算核心中的局部存储器的容量; 步骤2:数组访问模式指导的数据分布:分析小数组的访问模式,若该访问模式是规则访问,则生成带数据划分信息的数据拷贝子句,将计算所需数据截取和传输进局部存储器;若该访问模式不是规则访问,则生成缓存子句,将不规则访问的数组映射到软件cache ; 步骤3:主从协作的数组转置:判断小数组下标索引变量次序和循环嵌套迭代次序是否一致,当两个次序不一致时,按循环嵌套的迭代次序对数组进行转置,通过数组转置子句使数组通过连续的数据拷贝操作从主存储器传送到从核的局部存储器,并获得与循环嵌套访问方式一致的存储方式,从而将不连续访存转换为连续访存,提高并行程序性能; 步骤4:外围数据传输简化:生成加速数据区编译指示,将循环嵌套内层并行循环的数据传输子句转移到循环嵌套外层的加速数据区,仅在循环计算开始前和循环计算结束后进行数据传输,避免外层串行循环执行时内层并行循环的多次数据拷贝。
2.根据权利要求1所述的面向异构众核多级存储结构的数据分布与局部性优化方法,其特征是:所述步骤I中:采用动态分配的编译指导方法,在并行编译指示内插入数组分块子句,将超过局部存储器的容量限制的大数组划分为小数组,使大数组的部分数据也能由当前计算调度进入局部存储器,以利用局部存储器的快捷性加快运算功能。
3.根据权利要求1所述的面向异构众核多级存储结构的数据分布与局部性优化方法,其特征是:所述步骤I中:在生成数组分块子句时,采用基于贪婪策略的启发式搜索算法来获得最优的数组分块方案。
4.根据权利要求1所述的面向异构众核多级存储结构的数据分布与局部性优化方法,其特征是:所述步骤2中:通过对小数组下标表达式的分析来判断小数组的访问模式,如该访问模式是规则访问,则分析小数组的访问规律,获得小数组的划分信息,生成带数组划分信息的数据拷贝子句,由基础编译器依据数据拷贝子句将计算所需数据进行截取和传输进局部存储器。
5.根据权利要求1所述的面向异构众核多级存储结构的数据分布与局部性优化方法,其特征是:所述步骤4中:需要简化的外围数据传输为外层串行、内层并行的多重嵌套循环;外围数据传输简化还含有对该多重嵌套循环的并行化编译过程的改善,编译系统在并行化内层循环时不添加数据传输子句,遍历完内层循环回溯到外层串行循环时添加数据区编译指示,并根据整个循环嵌套的数据流分析结果,把需要传输的变量放到数据拷贝子句、缓存子句中。
全文摘要
本发明涉及一种面向异构众核多级存储结构的数据分布与局部性优化方法,具体为对程序进行数据流分析,完成数据在不同类型核心的存储器之间的高效映射和布局,通过自动生成指导数据分布的相关数据管理子句,显式控制局部存储器与主存储器的数据传输,决定数据进入局部存储器以及从局部存储器写回的时机、位置和内容,优化异构众核多级存储结构的存储性能;具体含有下列步骤步骤1数据规模自适应的数组分块;步骤2数组访问模式指导的数据分布;步骤3主从协作的数组转置;步骤4外围数据传输简化;本发明提升了程序的执行效率。
文档编号G06F12/08GK103226487SQ20131014832
公开日2013年7月31日 申请日期2013年4月25日 优先权日2013年4月25日
发明者姚远, 赵荣彩, 韩林, 李雁冰, 黄品丰 申请人:中国人民解放军信息工程大学