一种基于编译指导的众核数据分片方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体涉及一种基于编译指导的众核数据分片方法。
【背景技术】
[0002]众核处理器上的加速计算核心是众核处理器的加速运算部件,可以将需要加速运算的代码和数据加载到运算核心上执行。加速计算核心对不同层次的存储器的访问速度是有很大差异的,其访问片外主存是较慢的,而对片上存储器的访问比片外主存有更快的访问速度和更高的访存带宽。因此加速线程的数据只有放在片上局部存储器中才能获得良好的加速性能。而实际的应用中,往往因为某些数据较大且在加速线程中的访问模式不规则而无法存储在局部存储器中,从而使得应用的性能下降。
[0003]软件管理的多层次存储系统(Software-ManagedMemory Hierarchies System,SMMHS)指的是,众核处理器上有多层次存储系统,包括片外主存和每个或每几个计算核心拥有一块独立编址的片上存储器。片上存储器完全由用户或者软件来管理。片上存储器和片外主存构成了SMMHS的多级访存资源。
[0004]在拥有SMMHS的众核处理器上开发并行程序时,每个或每几个加速运算核心拥有一块独立编址的片上存储器,容量一般不大。因运算核心的片上局部存储器容量的限制,一些较大的数组变量如果在加速线程中具有不规则访问模式时,无法存储在局存中,只能存储在片外主存中。这样增加了加速线程的访存开销,降低了程序的性能。
[0005]某些编译器通过分析加速程序段循环中的数据访问模式,将较大的的数据分块导入到片上局存中,从而提高程序性能。但是他们的方法只限于访问模式规整(仿射下标函数)的循环,对于那些不规则的数据访问模式,他们的编译分析算法难以进行。
【发明内容】
[0006]本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种基于编译指导的众核数据分片方法,其能够解决加速线程(Accelerator thread)(运行在加速运算核心上的程序实体)中不规则访问特征的数组利用片上局存进行优化的问题,以提高程序性能。
[0007]根据本发明,提供了一种基于编译指导的众核数据分片方法,包括:
[0008]在加速程序段开始处添加编译指导语句,描述原始数组的多个分片特征;
[0009]编译器识别编译指导语句,记录原始数组的每个分片信息;
[0010]对原始数组的各个分片信息,计算该分片的大小,并在局存中申请具有相同大小的相应局存数组;
[0011]扫描整个加速程序段,检查原始数据的每个引用;如果该引用的数据在当前的分片内,则将原始数组的引用转换成对局存数组的引用;
[0012]如果该引用是读引用,则在原始数组的分片信息上记录读标志;如果该引用是写引用,则在原始数组的分片信息上记录写标志;
[0013]如果分片有读标志,在加速段开始处插入该分片的数据导入语句;如果分片有写标志,在加速段开始处插入该分片的数据导出语句。
[0014]优选地,在将原始数组的引用转换成对局存数组的引用后,对局存数组的引用重新计算数组下标。
[0015]优选地,所述基于编译指导的众核数据分片方法用于具有软件管理的多层次存储系统的众核处理器的编译系统。
[0016]优选地,所述原始数组的访问模式具有分段局部的特征。
[0017]优选地,所述原始数组的数组下标是循环变量的仿射函数。
[0018]本发明采用添加用户指导描述和编译分析相结合的策略,解决了某些访问模式复杂的大数组有效利用片上局部存储的问题,提高了程序的执行性能。
【附图说明】
[0019]结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
[0020]图1示意性地示出了根据本发明优选实施例的基于编译指导的众核数据分片方法的流程图。
[0021]需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
【具体实施方式】
[0022]为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
[0023]加速程序段所用到的数据需要尽可能地存储在片上局存中,优化编译器一般通过编译静态分析、剖析(profiling)等技术分析数据的引用模式、访问频率和生命周期等信息,然后选择恰当的算法和编译优化框架对大数组进行分片存储优化。这样可以获得两个方面的好处:其一使得那些整个变量不能在片上局存中存储下的变量也能够利用片上存储器进行优化;其二使得一些能够整个存储在片上局存中的变量只需要一部分存储在片上存储器即可,节约出剩余部分的片上存储空间做其它数据变量的访存优化。但是该方法具有一定的局限性。加速程序段对数据的访问模式是多样的,编译器很难分析清楚一段程序中重点数据的所有特征引用模式。因此该方法只适用于对数组访问模式规整的程序,例如数组下标是循环变量的仿射函数。
[0024]而在实际的应用程序中,很多数组的访问模式具有分段局部的特征,例如:在一次循环迭代中只访问数据的某一段或者某几段。这样的访问特征编译器很难分析清楚。
[0025]本发明提出的基于编译指导的众核数据分片技术即针对具有这类访问特征的数组,设计了用于描述数据的分片访问特征的编译指导语句,在加速段开始时由用户添加。编译器在编译过程中进行相应的程序变换,将数据分片导入或导出片上局部存储器,提高加速程序段的访存性能。
[0026]图
1示意性地示出了根据本发明优选实施例的基于编译指导的众核数据分片方法的流程图。例如,所述基于编译指导的众核数据分片方法可用于具有软件管理的多层次存储系统(SMMHS)的众核处理器的编译系统。
[0027]如图1所示,根据本发明优选实施例的基于编译指导的众核数据分片方法包括:
[0028]第一步骤S1:在加速程序段开始处添加编译指导语句,描述原始数组A的多个分片特征;如上所述,例如原始数组的访问模式具有分段局部的特征。
[0029]第二步骤S2:编译器识别编译指导语句,记录原始数组A的每个分片信息;
[0030]第三步骤S3:对原始数组A的一个分片信息,计算该分片的大小SIZE_1,并在局存中申请具有相同大小SIZE_1的相应的局存数组LDM_A1;
[0031]第四步骤S4:扫描整个加速程序段,考察(即检查)原始数据A的每个引用;如果该引用的数据在当前的分片内,则将原始数组A的引用转换成对局存数组LDM_A1的引用;此时,例如数组下标是循环变量的仿射函数,由此在引用转换后针对局存数组LDM_A1的引用重新计算下标,即在将原始数组的引用转换成对局存数组的引用后,对局存数组的引用重新计算数组下标;
[0032]第五步骤S5:如果该引用是读引用,则在原始数组A的分片信息上记录读标志;如果该引用是写引用,则在原始数组A的分片信息上记录写标志;
[0033]第六步骤S6:如果分片有读标志,在加速段开始处插入该分片的数据导入语句;如果分片有写标志,在加速段开始处插入该分片的数据导出语句;
[0034]第七步骤S7:如果原始数组A的还有其他分片信息未处理,则转第三步骤S3以便针对原始数组A的下一个分片信息进行上述处理;如果已经处理完原始数组A的所有分片信息,则程序结束。
[0035]根据上面所述流程可以看到,根据本发明优选实施例的基于编译指导的众核数据分片方法中,执行对大数组分片优化过程有两个重要方面:一是由用户添加的描述数组分片特征的编译指导语句;二是编译器在编译指导语句的指导下,对每个分片进行引用变换和数据传输。
[0036]在根据本发明优选实施例的基于编译指导的众核数据分片方法中,结合采用“用户添加数据访问特征描述”和“编译分析变换”的方式,实现了利用片上局存对具有分片引用特征的大数组的优化访问,提高了程序的性能。
[0037]本发明的优点在于针对加速程序段中某些编译器不能有效自动分析的具有分片引用特征的数组,结合采用“用户添加数据访问特征描述”和“编译分析变换”的方式,也能利用片上局部存储器进行优化,能有效提高程序的性能。而且编译指示使用方便简洁,综合收益大。
[0038]可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
【主权项】
1.一种基于编译指导的众核数据分片方法,其特征在于包括: 在加速程序段开始处添加编译指导语句,描述原始数组的多个分片特征; 编译器识别编译指导语句,记录原始数组的每个分片信息; 对原始数组的各个分片信息,计算该分片的大小,并在局存中申请具有相同大小的相应局存数组; 扫描整个加速程序段,检查原始数据的每个引用;如果该引用的数据在当前的分片内,则将原始数组的引用转换成对局存数组的引用; 如果该引用是读引用,则在原始数组的分片信息上记录读标志;如果该引用是写引用,则在原始数组的分片信息上记录写标志; 如果分片有读标志,在加速段开始处插入该分片的数据导入语句;如果分片有写标志,在加速段开始处插入该分片的数据导出语句。2.根据权利要求1所述的基于编译指导的众核数据分片方法,其特征在于,在将原始数组的引用转换成对局存数组的引用后,对局存数组的引用重新计算数组下标。3.根据权利要求1或2所述的基于编译指导的众核数据分片方法,其特征在于,所述基于编译指导的众核数据分片方法用于具有软件管理的多层次存储系统的众核处理器的编译系统。4.根据权利要求1或2所述的基于编译指导的众核数据分片方法,其特征在于,所述原始数组的访问模式具有分段局部的特征。5.根据权利要求1或2所述的基于编译指导的众核数据分片方法,其特征在于,所述原始数组的数组下标是循环变量的仿射函数。
【专利摘要】一种基于编译指导的众核数据分片方法,包括:在加速程序段开始处添加编译指导语句,描述原始数组的多个分片特征;编译器识别编译指导语句,记录原始数组的每个分片信息;对原始数组的各个分片信息,计算该分片的大小,并在局存中申请具有相同大小的相应局存数组;扫描整个加速程序段,检查原始数据的每个引用;如果该引用的数据在当前的分片内,则将原始数组的引用转换成对局存数组的引用;如果该引用是读引用,则在原始数组的分片信息上记录读标志;如果该引用是写引用,则在原始数组的分片信息上记录写标志;如果分片有读标志,在加速段开始处插入该分片的数据导入语句;如果分片有写标志,在加速段开始处插入该分片的数据导出语句。
【IPC分类】G06F9/45
【公开号】CN105487911
【申请号】CN201510830718
【发明人】漆锋滨, 毛兴权, 顾龙, 尤洪涛
【申请人】无锡江南计算技术研究所
【公开日】2016年4月13日
【申请日】2015年11月24日