1、(10)申请公布号 CN 102483701 A (43)申请公布日 2012.05.30 C N 1 0 2 4 8 3 7 0 1 A *CN102483701A* (21)申请号 201180003692.X (22)申请日 2011.07.04 2010-153325 2010.07.05 JP G06F 9/45(2006.01) (71)申请人松下电器产业株式会社 地址日本大阪府 (72)发明人田中旭 森下广之 井上昭彦 (74)专利代理机构永新专利商标代理有限公司 72002 代理人徐殿军 (54) 发明名称 程序生成装置、程序生产方法及程序 (57) 摘要 程序生成装置参照包含
2、将块重复处理N次 的、有关第i次执行的上述块内定义的变量处于 在有关第j次执行的上述块内被参照的相关关 系的循环处理的源程序,计算有关第i次的执行 的上述块及有关第i次以外的执行的1个以上的 上述块中的变量表述的等价关系,对于处于上述 相关关系的全部的对象变量的表述,确定与该对 象变量的表述等价的不具有上述相关关系的其 他变量的表述,生成用来进行上述循环处理的M 次的处理的、包括包含有所确定的其他变量的表 述的命令语句的程序,其中N2,1iN,i jN,MN。 (30)优先权数据 (85)PCT申请进入国家阶段日 2012.03.05 (86)PCT申请的申请数据 PCT/JP2011/003
3、812 2011.07.04 (87)PCT申请的公布数据 WO2012/004972 JA 2012.01.12 (51)Int.Cl. 权利要求书2页 说明书17页 附图20页 按照条约第19条修改的权利要求书2页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 17 页 附图 20 页 按照条约第19条修改的权利要求书 2 页 1/2页 2 1.一种程序生成装置,通过参照对象源程序而生成新的程序,该对象源程序包含将由 1个以上的命令语句构成的块重复处理N次的循环处理,该循环处理的在有关第i次执行的 上述块内的命令语句中定义的变量处于被有关第j次执行
4、的上述块内的命令语句所参照 的相关关系,其中N2,1iN,ijN,其特征在于, 该程序生成装置具备: 计算单元,以有关第i次执行的上述块、和有关第i次以外的执行的1个以上的上述块 为对象块,进行计算该对象块中的变量表述的等价关系的计算处理; 确定单元,基于上述计算单元计算出的变量表述的等价关系,对于上述变量之中的、处 于上述相关关系的全部的对象变量的表述,进行确定与该对象变量的表述等价的不具有上 述相关关系的其他变量的表述的确定处理;以及 生成单元,生成用来进行上述循环处理的M次的处理的、包含如下命令语句的程序,该 命令语句包含有上述确定单元确定的其他变量的表述,其中MN。 2.如权利要求1所
5、述的程序生成装置,其特征在于, 上述确定单元确定的与上述对象变量的表述等价的不具有上述相关关系的其他变量 的表述,是与哪个对象变量的表述都不同的变量的表述。 3.如权利要求2所述的程序生成装置,其特征在于, 上述计算单元将有关第i次执行的上述块、和有关第i+1次执行的上述块作为上述对 象块,进行上述计算处理; 每当上述计算单元进行上述计算处理时,上述确定单元基于已计算的各变量表述的等 价关系,对于全部的对象变量的表述,进行是否能够确定如下表述的判断,该表述是与该对 象变量的表述等价的不具有上述相关关系的其他变量的表述、而且是与哪个对象变量的表 述都不同的变量的表述; 在该判断处理的结果是否定的
6、期间,一边使i每次增加1,一边使上述计算单元重复进 行上述计算处理。 4.如权利要求2所述的程序生成装置,其特征在于, 上述程序生成装置参照的程序是用来由单一的处理器执行的程序; 上述生成单元生成的程序是用来由多个处理器并行执行的程序。 5.如权利要求2所述的程序生成装置,其特征在于, 在MN的情况下,上述生成单元将所生成的程序变更以使得其还进行上述循环处理 的N-M次的处理,并判断变更后的程序的处理和上述对象源程序的处理是否为等价,在为 等价的情况下,将上述生成的程序替换为该变更后的程序。 6.一种程序生产方法,通过参照对象源程序而生产新的程序,该对象源程序包含将由 1个以上的命令语句构成的
7、块重复处理N次的循环处理,该循环处理的在有关第i次执行的 上述块内的命令语句中定义的变量处于被有关第j次执行的上述块内的命令语句所参照 的相关关系,其中N2,1iN,ijN,其特征在于, 该程序生产方法包括: 计算步骤,以有关第i次执行的上述块、和有关第i次以外的执行的1个以上的上述块 为对象块,进行计算该对象块中的变量表述的等价关系的计算处理; 确定步骤,基于上述计算步骤计算出的变量表述的等价关系,对于上述变量之中的、处 权 利 要 求 书CN 102483701 A 2/2页 3 于上述相关关系的全部的对象变量的表述,进行确定与该对象变量的表述等价的不具有上 述相关关系的其他变量的表述的确
8、定处理;以及 生成步骤,生成用来进行上述循环处理的M次的处理的、包含如下命令语句的程序,该 命令语句包含有上述确定步骤确定的其他变量的表述,其中MN。 7.一种程序,用来使程序生成装置中的处理器进行程序生成处理,该程序生成装置通 过参照对象源程序而生成新的程序,该对象源程序包含将由1个以上的命令语句构成的块 重复处理N次的循环处理,该循环处理的在有关第i次执行的上述块内的命令语句中定义 的变量处于被有关第j次执行的上述块内的命令语句所参照的相关关系,其中N2,1i N,ijN,其特征在于, 上述程序生成处理包括: 计算步骤,以有关第i次执行的上述块、和有关第i次以外的执行的1个以上的上述块 为
9、对象块,进行计算该对象块中的变量表述的等价关系的计算处理; 确定步骤,基于上述计算步骤计算出的变量表述的等价关系,对于上述变量之中的、处 于上述相关关系的全部的对象变量的表述,进行确定与该对象变量的表述等价的不具有上 述相关关系的其他变量的表述的确定处理;以及 生成步骤,生成用来进行上述循环处理的M次的处理的、包含如下命令语句的程序,该 命令语句包含有上述确定步骤确定的其他变量的表述,其中MN。 权 利 要 求 书CN 102483701 A 1/17页 4 程序生成装置、 程序生产方法及程序 技术领域 0001 本发明涉及参照包含循环处理的源程序来生成新的程序的技术。 背景技术 0002 已
10、知有参照包含循环处理的源程序、生成用来使由该循环处理实现的规定处理由 多个处理器分担执行的新的程序的编译器等(例如,专利文献1)。 0003 这里,所谓循环处理,是将由1个以上的命令语句构成的块反复处理N(N2)次。 0004 根据专利文献1的技术,例如可以生成将N次的循环处理分割为各N/2次处理的 两个部分循环处理,由两个处理器独立地并行执行而构成的新的程序。因而,根据专利文献 1的技术,能够将N次的循环处理高速地执行。 0005 现有技术文献 0006 专利文献 0007 专利文献1:日本特许第3028821号 0008 专利文献2:日本特许第3234552号 0009 非专利文献 001
11、0 非专利文献1:Hans Zima等:“Supercompilers for Parallel and Vector Computers”,Addison Wesley Publishing Company Inc.,1991,(日文翻译)村岡洋一: “一一”,一社,1995 发明概要 0011 发明要解决的技术问题 0012 但是,在包含在源程序中的循环处理中,在具有在有关第j(ijN)次的执行 的块内的命令语句中参照由有关第i(1iN)次的执行的块内的命令语句所定义的变 量那样的相关关系的情况下,通过专利文献1的方法不能对应。即,在专利文献1的方法 中,不能由包含具有这样的相关关系的循环
12、处理的源程序生成用来使用多个处理器高速地 执行循环处理的程序。 发明内容 0013 所以,本发明是鉴于这样的问题而做出的,目的是提供一种用于对于通过参照包 含具有上述相关关系的循环处理的源程序,生成用来使用多个处理器将循环处理高速地执 行的程序的程序生成装置。 0014 用于解决问题的手段 0015 为了解决上述问题,有关本发明的程序生成装置,通过参照对象源程序而生成新 的程序,该对象源程序包含将由1个以上的命令语句构成的块重复处理N次的循环处理,该 循环处理的在有关第i次执行的上述块内的命令语句中定义的变量处于被有关第j次执行 的上述块内的命令语句所参照的相关关系,其中N2,1iN,ijN,
13、其特征在于, 说 明 书CN 102483701 A 2/17页 5 该程序生成装置具备:计算单元,以有关第i次执行的上述块、和有关第i次以外的执行的 1个以上的上述块为对象块,进行计算该对象块中的变量表述的等价关系的计算处理;确 定单元,基于上述计算单元计算出的变量表述的等价关系,对于上述变量之中的、处于上述 相关关系的全部的对象变量的表述,进行确定与该对象变量的表述等价的不具有上述相关 关系的其他变量的表述的确定处理;以及生成单元,生成用来进行上述循环处理的M次的 处理的、包含如下命令语句的程序,该命令语句包含有上述确定单元确定的其他变量的表 述,其中MN。 0016 发明效果 0017
14、具备上述结构的有关本发明的程序生成装置,通过参照包含具有上述相关关系的 循环处理的源程序,能够生成用来使用多个处理器将循环处理高速地执行的程序。 附图说明 0018 图1是表示包括有关实施方式的程序生成装置100的编译器系统1000的结构的 块图。 0019 图2是表示包含循环处理R1的部分程序P1及包含循环处理R4的部分程序P4的 图。 0020 图3是用来说明数据的相关关系的图。 0021 图4是用来说明循环处理R1中的数据的相关关系的图。 0022 图5是表示由程序生成装置100进行的程序生成处理的流程图,后接图6。 0023 图6是表示由程序生成装置100进行的程序生成处理的流程图,前
15、接图5,后接图 7。 0024 图7是表示由程序生成装置100进行的程序生成处理的流程图,前接图6。 0025 图8是表示循环处理R1中的迭代i及迭代i+1的图。 0026 图9是表示将名相关删除后的迭代i及迭代i+1的图。 0027 图10是表示计算关于将名相关删除后的迭代i及迭代i+1的各命令语句的变量 表述的等价关系的结果的图。 0028 图11是表示将名相关删除后的迭代i+2以及计算关于将名相关删除后的迭代i+2 的各命令语句的变量表述的等价关系的结果的图。 0029 图12是表示将名相关删除后的迭代i+3以及计算关于将名相关删除后的迭代i+3 的各命令语句的变量表述的等价关系的结果的
16、图。 0030 图13是表示将全部的真相关删除后的迭代i+3及迭代变形候选的图。 0031 图14是表示循环处理R1中的迭代02以及将名相关删除后的迭代02的图。 0032 图15是表示计算关于将名相关删除后的迭代0及1的各命令语句的变量表述的 等价关系的结果的图。 0033 图16是表示计算关于将名相关删除后的迭代2的各命令语句的变量表述的等价 关系的结果的图。 0034 图17是表示将真相关删除后的迭代02及部分程序P2的图。 0035 图18是表示部分程序P3的图。 0036 图19是表示循环处理R5R8的图。 说 明 书CN 102483701 A 3/17页 6 0037 图20是用
17、来说明进行变量表述的等价关系的计算的其他方法的例子的图。 具体实施方式 0038 以下,参照附图对本发明的实施方式进行说明。 0039 实施方式 0040 0041 图2是表示在处理完成时、对于数组(array)bk(0k99)能够得到相同的 处理结果的等价的部分程序P1和P4的图。 0042 有关实施方式的程序生成装置是将以往的编译器改良的结构,是通过参照包含图 2(a)所示的部分程序P1的源程序,生成与以往的编译器通过参照由编程者预先生成的包 含图2(b)所示的部分程序P4的源程序而生成得到的汇编程序同样的汇编程序的装置。 0043 这里,部分程序P1是包含具有真相关(true depen
18、dence)的关系的循环处理R1 的程序。关于真相关的关系,在后面详细说明,是指由在循环控制变量k是i(0i99) 的情况下执行的块(block)B1内的命令语句而定义的变量、由在循环控制变量k是i+1的 情况下执行的块B1内的命令语句来参照那样的关系。 0044 具有真相关的关系的命令语句间的执行顺序如果与本来的执行顺序逆转,则不能 得到正确的结果,所以该循环处理R1一般一边使循环控制变量k每次增加1一边依次执 行。 0045 另一方面,包含在部分程序P4中的循环处理R4是不具有上述那样的真相关的关 系的处理。因而,能够使用多个处理器执行。例如,可以将循环处理R4分为循环控制变量k 从0到4
19、9的部分循环处理、和循环控制变量k从50到99的部分循环处理、使两个处理器 独立地并行执行。由此,与用1个处理器依次执行关于循环控制变量k从0到99的循环处 理R1的情况相比,能够更高速地执行循环处理。 0046 如上所述,有关实施方式的程序生成装置通过参照包含图2(a)所示的部分程序 P1的源程序,能够生成与以往的编译器通过参照包含图2(b)所示的部分程序P4的源程序 生成而得到的汇编程序同样的汇编程序。 0047 因而,在在如部分程序P1那样、已经生成了包含具有真相关的关系的循环处理的 源程序的情况下,能够不重新生成如部分程序P4那样、包含不具有真相关的关系的循环处 理的源程序而生成适合于
20、并行执行的汇编程序,在这一点上,有关实施方式的程序生成装 置是有效的。 0048 另外,部分程序P1虽然如上述那样包含具有真相关的关系的循环处理R1,但因为 以下说明的理由,可以说是与部分程序P4相比更适合于单一的处理器中的高速执行的程 序。 0049 这里,一般已知通过将程序内的变量尽量分配给寄存器、能够将程序更高速地执 行。这是因为,与存储器相比,向寄存器的访问能够极高速地进行。 0050 在一般的编译器中,对于包含在部分程序P1中的a0、a1、a2那样的简单变量分配 特定的寄存器的可能性较高。因而,在执行部分程序P1的情况下,与执行部分程序P4的情 况相比,能够减少向存储器的访问次数。即
21、,在使用单一的处理器的情况下,部分程序P1能 够比部分程序P4更高速地执行。 说 明 书CN 102483701 A 4/17页 7 0051 0052 使用图3对于以上述真相关为代表的数据的相关关系进行说明。 0053 图3是用来说明数据的相关关系的图。 0054 如该图所示,由命令语句ST100定义的变量a处于被在该命令语句ST100后执行 的命令语句ST200所参照的关系。在处于这样的关系的情况下,是指具有从命令语句ST100 向命令语句ST200的“真相关”。 0055 此外,如该图所示,被命令语句ST200所参照的变量a,处于在该命令语句ST200后 执行的命令语句ST300中被定义
22、的关系。在处于这样的关系的情况下,是指具有从命令语 句ST200向命令语句ST300的“逆相关”(anti-dependence)。 0056 此外,如该图所示,由命令语句ST100定义的变量a,处于在命令语句ST300中被再 定义的关系。在处于这样的关系的情况下,是指有从命令语句ST100向命令语句ST300的 “输出相关”(output dependence)。 0057 此外,以下,将作为真相关、逆相关及输出相关的发生原因的变量称作“作为相关 的原因的变量”。在图3中,变量a是“作为相关的原因的变量”。 0058 另外,关于“逆相关”和“输出相关”,已知在处于相关关系的各命令语句中,通过
23、将 作为相关的原因的变量的表述替换为相互不同的表述,能够将该相关删除(例如,参照非 专利文献1的120页)。因此,有时将“逆相关”及“输出相关”称作“名相关”。 0059 以上述部分程序P1中的循环处理R1为例,具体地说明数据的相关关系。 0060 图4是用来说明图2(a)所示的循环处理R1中的数据的相关关系的图。 0061 以下,将在循环控制变量是m(m是循环控制变量能够取的任意的值)的情况下执 行的循环内的块称作“迭代m”,将生成迭代m称作“关于m的迭代展开”,将该m称作“迭代 号码”。 0062 图4(a)表示在图2(a)所示的循环处理R1中的循环控制变量k是0的情况下执 行的块B1、即
24、迭代0,图4(b)表示迭代1。 0063 这里,由图4(a)所示的迭代0的命令语句ST12、ST13、ST14分别定义的变量a0、 a1、a2处于由图4(b)所示的迭代1的命令语句ST21参照的关系。 0064 此外,由图4(a)所示的迭代0的命令语句ST13、ST14分别定义的变量a1、a2处于 由图4(b)所示的迭代1的命令语句ST22、ST23参照的关系。 0065 即,存在以变量a0为相关的原因的、从命令语句ST12向ST21的真相关。此外,存 在以变量a1为相关的原因的、从命令语句ST13向ST21的真相关以及从命令语句ST13向 ST22的真相关。此外,存在以变量a2为相关的原因的
25、、从命令语句ST14向ST21的真相关 以及从命令语句ST14向ST23的真相关。 0066 此外,由图4(a)所示的迭代0的命令语句ST12定义的变量a0处于由图4(b)所 示的迭代1的命令语句ST22再定义的关系。 0067 即,存在以变量a0为相关的原因的、从命令语句ST12向ST22的输出相关。同样, 存在以变量a1为相关的原因的、从命令语句ST13向ST23的输出相关,存在以变量a2为相 关的原因的、从命令语句ST14向ST24的输出相关。 0068 此外,由图4(b)所示的迭代1的命令语句ST21参照的变量a0、a1、a2处于由命令 语句ST22ST24分别定义的关系。即,存在以变
26、量a0为相关的原因的、从命令语句ST21 说 明 书CN 102483701 A 5/17页 8 向ST22的逆相关,存在以变量a1为相关的原因的、从命令语句ST21向ST23的逆相关,存 在以变量a2为相关的原因的、从命令语句ST21向ST24的逆相关。 0069 此外,在迭代0中也同样,存在以变量a0、变量a1、变量a2为相关的原因的逆相 关。 0070 另外,以下,将循环处理中的、存在从某个迭代内的命令语句向其他迭代内的命令 语句的相关的情况也称作“在迭代间有相关关系”。 0071 0072 图1是表示包括有关实施方式的程序生成装置100的编译器系统1000的结构的 块图。 0073 编
27、译器系统1000是通过参照包含如上述部分程序P1那样、在迭代间有真相关的 关系的循环处理的源程序11,从而生成能够实现由多个处理器进行的循环处理的并行执行 的目标程序14的系统。 0074 编译器系统1000由包括处理器(未图示)、存储器(未图示)、和硬盘等的存储装 置10的计算机(例如,PC(Personal Computer:个人电脑)实现。 0075 编译器系统1000如该图所示,包括存储装置10、程序生成装置100、汇编器210、和 链接器(linker)220而构成。另外,程序生成装置100、汇编器210及链接器220的各功能 通过上述处理器将存储在存储装置10中的未图示的程序读入到
28、上述存储器中、执行所读 入的程序来实现。 0076 这里,程序生成装置100是将以往的编译器改良的结构,具有参照存储在存储装 置10中的、用C语言或C+语言等的高级语言记述的源程序11而生成汇编程序12的功能。 程序生成装置100将所生成的汇编程序12向存储装置10保存。 0077 即,程序生成装置100通过参照包含在迭代间有真相关的关系的循环处理的源程 序11,生成用来执行消除了该真相关的关系的循环处理的汇编程序12。 0078 此外,汇编器210具有参照由程序生成装置100向存储装置10保存的汇编程序 12、生成由机器语言记述的浮动的二进制程序(relocatable binary pro
29、gram)13的功能。 汇编器210将所生成的浮动二进制程序13向存储装置10保存。 0079 此外,链接器220具有通过决定在由汇编器210向存储装置10保存的浮动二进制 程序13中未解决的数据的地址配置等,通过与需要的库等连结,从而生成计算机能够执行 的目标程序14的功能。链接器220将所生成的目标程序14向存储装置10保存。 0080 以下,使用图1对程序生成装置100的结构更详细地说明。 0081 如该图所示,程序生成装置100具备存储部110、取得部120、计算部130、确定部 140、和生成部150。 0082 这里,存储部110是用来将源程序11、以及计算部130、确定部140及
30、生成部150 的处理结果保存的存储器区域。 0083 即,以下虽然没有特别明述,但假设计算部130、确定部140及生成部150间的处理 结果的交换是经由存储部110进行的。 0084 此外,取得部120具有从存储装置10读出源程序11、保存到存储部110中的功能。 0085 计算部130具有计算关于在由取得部120保存到存储部110中的源程序11中包 含的循环处理中的、某个迭代及其他1个以上的迭代的变量表述的等价关系的功能。计算 说 明 书CN 102483701 A 6/17页 9 部130包括迭代展开部131、名相关删除部132、和等价关系计算部133。 0086 这里,迭代展开部131具
31、有基于包含在源程序11中的循环处理进行迭代展开 (expanding iteration)的功能。 0087 名相关删除部132具有将在迭代展开部131进行了迭代展开的、迭代号码连续的 两个迭代间存在的名相关(即,输出相关及逆相关)删除的功能。 0088 这里,使用与将处于相关关系的两个命令语句中的作为相关的原因的变量的表述 替换为相互不同的表述的以往以来进行的方法同样的方法,进行名相关的删除。 0089 等价关系计算部133具有计算关于由名相关删除部132将名相关删除后的上述两 个迭代的各命令语句的变量表述的等价关系的功能。这里,假设使用与在专利文献2中说 明的方法同样的方法进行变量表述的等
32、价关系的计算。 0090 此外,确定部140具有基于等价关系计算部133计算出的变量表述的等价关系、判 断是否能够通过将作为存在于上述两个迭代间的真相关的原因的全部的变量替换为等价 的没有相关关系的其他变量及式子,从而将全部的真相关删除的功能。 0091 此外,确定部140具有进行基于该判断结果控制计算部130对变量表述的等价关 系的计算的执行的功能及以下说明的判断的功能。即,该判断是判断是否能够将包含在源 程序11中的循环处理内的块用由以下说明的生成部150生成的迭代变形候选来替换。 0092 生成部150具有当确定部140判断为能够将存在于上述两个迭代间的全部的真相 关删除时、基于将全部的
33、真相关删除后的迭代来生成迭代变形候选的功能。 0093 详细在后面叙述(参照图13(a)及图13(b),但迭代变形候选是将删除了上述全 部的真相关的迭代一般化(generalizing)、以便在该迭代号码以后的迭代中也能够使用 的。 0094 此外,生成部150具有当确定部140判断为能够将包含在源程序11中的循环处理 内的块用迭代变形候选替换时、生成汇编程序12的功能。该汇编程序12基于将包含在源 程序11中的循环处理内的块用迭代变形候选替换后的源程序。 0095 0096 以下,说明程序生成装置100的动作。 0097 图5图7是表示由程序生成装置100进行的程序生成处理的流程图。 009
34、8 程序生成装置100的取得部120从存储装置10读出源程序11,保存到存储部110 中。计算部130的迭代展开部131进行关于表示包含在源程序11中的循环处理中的循环 控制变量的任意的值的i、和i+1的迭代展开(图5的步骤S1)。 0099 计算部130的名相关删除部132确定迭代i及迭代i+1的各命令语句间的相关关 系(步骤S2)。此外,名相关删除部132通过将作为名相关(即,输出相关和逆相关)的原 因的变量的表述变更,将名相关删除(步骤S3)。 0100 计算部130的等价关系计算部133计算关于删除了名相关的迭代i及迭代i+1的 各命令语句的变量表述的等价关系(步骤S4)。 0101
35、该变量表述的等价关系的计算方法如上所述,是与在专利文献2中说明的方法同 样的方法,所以以下简单地说明,但作为结果能够得到图10所示那样的等价式集合。 0102 这里,将图10(a)及图10(b)所示的用“”和“”括起的部分称作“等价式集合”、 将在等价式集合中记载的用“(”和“)”括起的部分称作“等价式”。此外,在等价式中记载 说 明 书CN 102483701 A 7/17页 10 的用“,”分隔的各要素表示是等价的。 0103 首先,等价关系计算部133将迭代i及迭代i+1的各命令语句1个1个依次作为 处理对象而进行以下的处理。 0104 即,等价关系计算部133判断包含记述在作为处理对象
36、的命令语句的右边或左边 的变量及式子的等价式是否已经包含在等价式集合中。 0105 在判断为对应的等价式不包含在等价式集合中的情况下,将关于作为处理对象的 命令语句的新的等价式追加到等价式集合中。 0106 此外,在判断为包含记述在作为处理对象的命令语句的右边的变量及式子的等价 式已经包含在等价式集合中的情况下,作为该等价式的要素,追加记述在这个作为处理对 象的命令语句的左边的变量及式子。 0107 此外,在判断为包含记述在作为处理对象的命令语句的左边的变量及式子的等价 式已经包含在等价式集合中的情况下,代替该等价式而将关于作为处理对象的命令语句的 新的等价式追加到等价式集合中。 0108 说
37、明程序生成处理的后续(参照图5)。 0109 如果步骤S4的处理完成,则确定部140基于等价关系计算部133计算出的变量表 述的等价关系,判断是否能够将全部的真相关删除(步骤S5)。 0110 更详细地讲,在能够将作为真相关的原因的全部的变量的表述基于在步骤S4中 计算出的变量表述的等价关系、替换为在步骤S2中确定的作为相关的原因的变量及在步 骤S3中为了将名相关删除而导入的变量以外的等价的变量及式子的表述的情况下,判断 为能够将全部的真相关删除(步骤S5:是)。 0111 这里,不替换为在步骤S2中确定的作为相关的原因的变量及在步骤S3中为了将 名相关删除而导入的变量的表述是因为,这样的变量
38、有可能在其他迭代中成为新的相关的 原因。即,这是因为,如果替换为这样的变量的表述,结果也有可能没有将迭代间的相关删 除。 0112 在判断为能够将全部的真相关删除的情况下(步骤S5:是),作为能够将全部的真 相关删除的迭代i+m的m的值而设定“1”(步骤S6),前进到图6的步骤S15的处理。 0113 此外,在判断为不能将全部的真相关删除的情况下(步骤S5:否),确定部140将 上述m的值设定为“2”(图6的步骤S7)。 0114 此外,确定部140判断m的值是否比从包含在源程序11中的循环控制变量能够 取的最大值(以下,表述为“kmax”)减去该循环控制变量能够取的最小值(以下,表述为 “k
39、min”)后的值小(步骤S8)。 0115 在m的值是从kmax减去kmin的值以上的情况下(步骤S8:否),为不能将真相关 删除,程序生成装置100结束程序生成处理(参照图7)。 0116 另一方面,在m的值比从kmax减去kmin的值小的情况下(步骤S8:是),确定部 140通过通知m的值,对计算部130指示处理。指示了处理的计算部130的迭代展开部131 与步骤S1的处理同样,进行关于i+m的迭代展开(步骤S9)。 0117 此外,名相关删除部132与步骤S2的处理同样,确定迭代i+m-1及迭代i+m的各 命令语句间的相关关系(步骤S10),与步骤S3的处理同样,将名相关删除(步骤S11
40、)。 0118 此外,等价关系计算部133与步骤S4的处理同样,计算关于删除了名相关的迭代 说 明 书CN 102483701 A 10 8/17页 11 i+m-1及迭代i+m的各命令语句的变量表述的等价关系(步骤S12)。 0119 接着,确定部140与步骤S5的处理同样,基于在步骤S12中由等价关系计算部133 计算出的变量表述的等价关系,判断是否能够将全部的真相关删除(步骤S13)。 0120 这里,确定部140因与在步骤S5中说明的同样的理由,将在步骤S2及S10中确定 的作为相关的原因的变量及在步骤S3和S11中为了将名相关删除而导入的变量的表述用 于置换。 0121 在判断为不能
41、将全部的真相关的情况下(步骤S13:否),确定部140使m的值增 加1个(步骤S14),再次从步骤S8起进行处理。 0122 另一方面,在确定部140判断为能将全部的真相关删除的情况下(步骤S13:是), 生成部150基于将全部的真相关删除后的迭代i+m生成迭代变形候选(步骤S15)。 0123 这里,i表示包含在源程序11中的循环处理中的循环控制变量的任意的值。因而, 在迭代i+m中能够将全部的真相关删除意味着在迭代kmin+m以后的迭代中能够将全部的 真相关删除。 0124 所以,生成部150生成进行一般化以使得在迭代号码为kmin+m到kmax的迭代中 也能够使用的迭代变形候选。 012
42、5 接着,确定部140通过通知kmin及m-1的值,对计算部130指示处理。被指示了 处理的计算部130的迭代展开部131与步骤S1的处理同样,进行对从kmin到m-1各自的 迭代展开(图7的步骤S16)。 0126 此外,名相关删除部132对于从迭代kmin到迭代m-1的每个迭代,分别与步骤S2 的处理同样,确定各命令语句间的相关关系(步骤S17),与步骤S3的处理同样,将名相关删 除(步骤S18)。 0127 此外,等价关系计算部133与步骤S4的处理同样,计算关于将名相关删除后的迭 代kmin到迭代m-1的各自的各命令语句的变量表述的等价关系(步骤S19)。 0128 接着,确定部140
43、与步骤S5的处理同样,基于在步骤S19中等价关系计算部133 计算出的变量表述的等价关系,判断是否能够将全部的真相关删除(步骤S20)。 0129 在确定部140判断为不能将全部的真相关删除的情况下(步骤S20:否),认为循 环控制变量在从kmin到m-1的范围中不能将真相关删除,程序生成装置100结束程序生成 处理。 0130 此外,在确定部140判断为能够将全部的真相关删除的情况下(步骤S20:是),判 断将全部的真相关删除后的迭代kmin到迭代m-1是否是与在步骤S15中生成的迭代变形 候选中的迭代kmin到迭代m-1相同形式(步骤S21)。 0131 在确定部140判断为不是相同形式的
44、情况下(步骤S21:否),程序生成装置100 结束程序生成处理。这是因为,在此情况下,不能将能够应用在循环控制变量为从kmin到 m-1的范围中的删除了真相关的循环处理、与能够应用到循环控制变量为从m到kmax的范 围中的删除了真相关的循环处理集中为1个循环处理。 0132 另一方面,在确定部140判断为与迭代变形候选中的迭代kmin到迭代m-1相同形 式的情况下(步骤S21:是),生成部150如以下这样生成汇编程序12(步骤S22)。即,生 成部150在对将源程序11的循环处理内的块替换为迭代变形候选的程序进行优化和并行 化(parallelizing)后,生成汇编程序12。 说 明 书CN
45、 102483701 A 11 9/17页 12 0133 另外,优化和并行化可以通过以往以来进行的方法实现,所以这里省略详细的说 明,关于进行了优化和并行化后的程序的具体例在后面叙述(参照图18)。 0134 生成部150将所生成的汇编程序12保存到存储装置10中,程序生成装置100结 束程序生成处理。 0135 0136 以下,以设源程序11包含图2(a)所示的部分程序P1的情况为例,按照图5图 7所示的流程图说明程序生成装置100的动作。 0137 程序生成装置100的取得部120从存储装置10读出源程序11,保存到存储部110 中。计算部130的迭代展开部131进行关于表示包含在源程序
46、11中的循环处理(在该例 中是R1)中的循环控制变量(在该例中是k)的任意的值的i和i+1的迭代展开(图5的 步骤S1)。 0138 图8(a)是表示图2(a)所示的循环处理R1中的迭代i的图,图8(b)是表示迭代 i+1的图。 0139 计算部130的名相关删除部132确定迭代i及迭代i+1的各命令语句间的相关关 系(步骤S2)。此外,名相关删除部132通过变更作为名相关(即,输出相关和逆相关)的 原因的变量的表述,将名相关删除(步骤S3)。 0140 在图8(a)及图8(b)所示的例子中,以变量a0为相关的原因,存在从命令语句 ST42向命令语句ST51的真相关、从命令语句ST42向命令语
47、句ST52的输出相关、从命令语 句ST41向命令语句ST42的逆相关、和从命令语句ST51向ST52的逆相关。 0141 此外,以变量a1为相关的原因,存在从命令语句ST43向命令语句ST51的真相关、 从命令语句ST43向命令语句ST53的输出相关、从命令语句ST41向命令语句ST43的逆相 关、和从命令语句ST51向ST53的逆相关。 0142 此外,以变量a2为相关的原因,存在从命令语句ST44向命令语句ST51的真相关、 从命令语句ST44向命令语句ST54的输出相关、从命令语句ST41向命令语句ST44的逆相 关、和从命令语句ST51向ST54的逆相关。 0143 通过将命令语句ST
48、42中的变量a0的表述变更为“a0_i”、将命令语句ST52中的变 量a0的表述变更为“a0_i1”,能够将以变量a0为相关的原因的名相关删除。 0144 此外,与变量a0的情况同样,通过将命令语句ST43中的变量a1的表述变更为 “a1_i”、将命令语句ST53中的变量a1的表述变更为“a1_i1”,能够将以变量a1为相关的原 因的名相关删除。此外,通过将命令语句ST44中的变量a2的表述变更为“a2_i”、将命令 语句ST54中的变量a2的表述变更为“a2_i1”,能够将以变量a2为相关的原因的名相关删 除。 0145 图9(a)是表示从图8(a)所示的迭代i中删除了名相关的迭代i的图,图9(b)是 表示从图8(b)所示的迭代i+1删除了名相关的迭代i+1的图。 0146 另外,在步骤S3的处理中,由于仅将名相关删除,所以真相关继续存在。即,在图 9(a)及图9(b)所示的例子中,存在从命令语句ST46、ST47、ST48向命令语句ST55的以变 量a0_i、a1_i、a2_i为相关的原因的真相关、和从命令语句ST47、ST48向命令语句ST56、 ST57的以变量a1_i、a2_i为相关的原因的真相关。 0147 计算部130的等价关系计算部133计算关于将名
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1