程序生成装置、程序生产方法及程序.pdf

上传人:32 文档编号:4255404 上传时间:2018-09-12 格式:PDF 页数:42 大小:1.33MB
返回 下载 相关 举报
摘要
申请专利号:

CN201180003692.X

申请日:

2011.07.04

公开号:

CN102483701A

公开日:

2012.05.30

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 9/45申请公布日:20120530|||实质审查的生效IPC(主分类):G06F 9/45申请日:20110704|||公开

IPC分类号:

G06F9/45

主分类号:

G06F9/45

申请人:

松下电器产业株式会社

发明人:

田中旭; 森下广之; 井上昭彦

地址:

日本大阪府

优先权:

2010.07.05 JP 2010-153325

专利代理机构:

永新专利商标代理有限公司 72002

代理人:

徐殿军

PDF下载: PDF下载
内容摘要

程序生成装置参照包含将块重复处理N次的、有关第i次执行的上述块内定义的变量处于在有关第j次执行的上述块内被参照的相关关系的循环处理的源程序,计算有关第i次的执行的上述块及有关第i次以外的执行的1个以上的上述块中的变量表述的等价关系,对于处于上述相关关系的全部的对象变量的表述,确定与该对象变量的表述等价的不具有上述相关关系的其他变量的表述,生成用来进行上述循环处理的M次的处理的、包括包含有所确定的其他变量的表述的命令语句的程序,其中N≥2,1≤i<N,i<j≤N,M≤N。

权利要求书

1: 一种程序生成装置, 通过参照对象源程序而生成新的程序, 该对象源程序包含将由 1 个以上的命令语句构成的块重复处理 N 次的循环处理, 该循环处理的在有关第 i 次执行的 上述块内的命令语句中定义的变量处于被有关第 j 次执行的上述块内的命令语句所参照 的相关关系, 其中 N ≥ 2, 1 ≤ i < N, i < j ≤ N, 其特征在于, 该程序生成装置具备 : 计算单元, 以有关第 i 次执行的上述块、 和有关第 i 次以外的执行的 1 个以上的上述块 为对象块, 进行计算该对象块中的变量表述的等价关系的计算处理 ; 确定单元, 基于上述计算单元计算出的变量表述的等价关系, 对于上述变量之中的、 处 于上述相关关系的全部的对象变量的表述, 进行确定与该对象变量的表述等价的不具有上 述相关关系的其他变量的表述的确定处理 ; 以及 生成单元, 生成用来进行上述循环处理的 M 次的处理的、 包含如下命令语句的程序, 该 命令语句包含有上述确定单元确定的其他变量的表述, 其中 M ≤ N。
2: 如权利要求 1 所述的程序生成装置, 其特征在于, 上述确定单元确定的与上述对象变量的表述等价的不具有上述相关关系的其他变量 的表述, 是与哪个对象变量的表述都不同的变量的表述。
3: 如权利要求 2 所述的程序生成装置, 其特征在于, 上述计算单元将有关第 i 次执行的上述块、 和有关第 i+1 次执行的上述块作为上述对 象块, 进行上述计算处理 ; 每当上述计算单元进行上述计算处理时, 上述确定单元基于已计算的各变量表述的等 价关系, 对于全部的对象变量的表述, 进行是否能够确定如下表述的判断, 该表述是与该对 象变量的表述等价的不具有上述相关关系的其他变量的表述、 而且是与哪个对象变量的表 述都不同的变量的表述 ; 在该判断处理的结果是否定的期间, 一边使 i 每次增加 1, 一边使上述计算单元重复进 行上述计算处理。
4: 如权利要求 2 所述的程序生成装置, 其特征在于, 上述程序生成装置参照的程序是用来由单一的处理器执行的程序 ; 上述生成单元生成的程序是用来由多个处理器并行执行的程序。
5: 如权利要求 2 所述的程序生成装置, 其特征在于, 在 M < N 的情况下, 上述生成单元将所生成的程序变更以使得其还进行上述循环处理 的 N-M 次的处理, 并判断变更后的程序的处理和上述对象源程序的处理是否为等价, 在为 等价的情况下, 将上述生成的程序替换为该变更后的程序。
6: 一种程序生产方法, 通过参照对象源程序而生产新的程序, 该对象源程序包含将由 1 个以上的命令语句构成的块重复处理 N 次的循环处理, 该循环处理的在有关第 i 次执行的 上述块内的命令语句中定义的变量处于被有关第 j 次执行的上述块内的命令语句所参照 的相关关系, 其中 N ≥ 2, 1 ≤ i < N, i < j ≤ N, 其特征在于, 该程序生产方法包括 : 计算步骤, 以有关第 i 次执行的上述块、 和有关第 i 次以外的执行的 1 个以上的上述块 为对象块, 进行计算该对象块中的变量表述的等价关系的计算处理 ; 确定步骤, 基于上述计算步骤计算出的变量表述的等价关系, 对于上述变量之中的、 处 2 于上述相关关系的全部的对象变量的表述, 进行确定与该对象变量的表述等价的不具有上 述相关关系的其他变量的表述的确定处理 ; 以及 生成步骤, 生成用来进行上述循环处理的 M 次的处理的、 包含如下命令语句的程序, 该 命令语句包含有上述确定步骤确定的其他变量的表述, 其中 M ≤ N。
7: 一种程序, 用来使程序生成装置中的处理器进行程序生成处理, 该程序生成装置通 过参照对象源程序而生成新的程序, 该对象源程序包含将由 1 个以上的命令语句构成的块 重复处理 N 次的循环处理, 该循环处理的在有关第 i 次执行的上述块内的命令语句中定义 的变量处于被有关第 j 次执行的上述块内的命令语句所参照的相关关系, 其中 N ≥ 2, 1≤i < N, i < j ≤ N, 其特征在于, 上述程序生成处理包括 : 计算步骤, 以有关第 i 次执行的上述块、 和有关第 i 次以外的执行的 1 个以上的上述块 为对象块, 进行计算该对象块中的变量表述的等价关系的计算处理 ; 确定步骤, 基于上述计算步骤计算出的变量表述的等价关系, 对于上述变量之中的、 处 于上述相关关系的全部的对象变量的表述, 进行确定与该对象变量的表述等价的不具有上 述相关关系的其他变量的表述的确定处理 ; 以及 生成步骤, 生成用来进行上述循环处理的 M 次的处理的、 包含如下命令语句的程序, 该 命令语句包含有上述确定步骤确定的其他变量的表述, 其中 M ≤ N。

说明书


程序生成装置、 程序生产方法及程序

    【技术领域】
     本发明涉及参照包含循环处理的源程序来生成新的程序的技术。背景技术 已知有参照包含循环处理的源程序、 生成用来使由该循环处理实现的规定处理由 多个处理器分担执行的新的程序的编译器等 ( 例如, 专利文献 1)。
     这里, 所谓循环处理, 是将由 1 个以上的命令语句构成的块反复处理 N(N ≥ 2) 次。
     根据专利文献 1 的技术, 例如可以生成将 N 次的循环处理分割为各 N/2 次处理的 两个部分循环处理, 由两个处理器独立地并行执行而构成的新的程序。 因而, 根据专利文献 1 的技术, 能够将 N 次的循环处理高速地执行。
     现有技术文献
     专利文献
     专利文献 1 : 日本特许第 3028821 号
     专利文献 2 : 日本特许第 3234552 号
     非专利文献
     非 专 利 文 献 1: Hans Zima 等 : “Supercompilers for Parallel and Vector Computers” , Addison Wesley Publishing Company Inc., 1991, ( 日文翻译 ) 村岡洋一 : “ス一パ一コンパイラ” , オ一ム社, 1995
     发明概要
     发明要解决的技术问题
     但是, 在包含在源程序中的循环处理中, 在具有在有关第 j(i < j ≤ N) 次的执行 的块内的命令语句中参照由有关第 i(1 ≤ i < N) 次的执行的块内的命令语句所定义的变 量那样的相关关系的情况下, 通过专利文献 1 的方法不能对应。即, 在专利文献 1 的方法 中, 不能由包含具有这样的相关关系的循环处理的源程序生成用来使用多个处理器高速地 执行循环处理的程序。 发明内容 所以, 本发明是鉴于这样的问题而做出的, 目的是提供一种用于对于通过参照包 含具有上述相关关系的循环处理的源程序, 生成用来使用多个处理器将循环处理高速地执 行的程序的程序生成装置。
     用于解决问题的手段
     为了解决上述问题, 有关本发明的程序生成装置, 通过参照对象源程序而生成新 的程序, 该对象源程序包含将由 1 个以上的命令语句构成的块重复处理 N 次的循环处理, 该 循环处理的在有关第 i 次执行的上述块内的命令语句中定义的变量处于被有关第 j 次执行 的上述块内的命令语句所参照的相关关系, 其中 N ≥ 2, 1 ≤ i < N, i < j ≤ N, 其特征在于,
     该程序生成装置具备 : 计算单元, 以有关第 i 次执行的上述块、 和有关第 i 次以外的执行的 1 个以上的上述块为对象块, 进行计算该对象块中的变量表述的等价关系的计算处理 ; 确 定单元, 基于上述计算单元计算出的变量表述的等价关系, 对于上述变量之中的、 处于上述 相关关系的全部的对象变量的表述, 进行确定与该对象变量的表述等价的不具有上述相关 关系的其他变量的表述的确定处理 ; 以及生成单元, 生成用来进行上述循环处理的 M 次的 处理的、 包含如下命令语句的程序, 该命令语句包含有上述确定单元确定的其他变量的表 述, 其中 M ≤ N。
     发明效果
     具备上述结构的有关本发明的程序生成装置, 通过参照包含具有上述相关关系的 循环处理的源程序, 能够生成用来使用多个处理器将循环处理高速地执行的程序。 附图说明
     图 1 是表示包括有关实施方式的程序生成装置 100 的编译器系统 1000 的结构的 图 2 是表示包含循环处理 R1 的部分程序 P1 及包含循环处理 R4 的部分程序 P4 的 图 3 是用来说明数据的相关关系的图。 图 4 是用来说明循环处理 R1 中的数据的相关关系的图。 图 5 是表示由程序生成装置 100 进行的程序生成处理的流程图, 后接图 6。 图 6 是表示由程序生成装置 100 进行的程序生成处理的流程图, 前接图 5, 后接图块图。
     图。
     7。 图 7 是表示由程序生成装置 100 进行的程序生成处理的流程图, 前接图 6。
     图 8 是表示循环处理 R1 中的迭代 i 及迭代 i+1 的图。
     图 9 是表示将名相关删除后的迭代 i 及迭代 i+1 的图。
     图 10 是表示计算关于将名相关删除后的迭代 i 及迭代 i+1 的各命令语句的变量 表述的等价关系的结果的图。
     图 11 是表示将名相关删除后的迭代 i+2 以及计算关于将名相关删除后的迭代 i+2 的各命令语句的变量表述的等价关系的结果的图。
     图 12 是表示将名相关删除后的迭代 i+3 以及计算关于将名相关删除后的迭代 i+3 的各命令语句的变量表述的等价关系的结果的图。
     图 13 是表示将全部的真相关删除后的迭代 i+3 及迭代变形候选的图。
     图 14 是表示循环处理 R1 中的迭代 0 ~ 2 以及将名相关删除后的迭代 0 ~ 2 的图。
     图 15 是表示计算关于将名相关删除后的迭代 0 及 1 的各命令语句的变量表述的 等价关系的结果的图。
     图 16 是表示计算关于将名相关删除后的迭代 2 的各命令语句的变量表述的等价 关系的结果的图。
     图 17 是表示将真相关删除后的迭代 0 ~ 2 及部分程序 P2 的图。
     图 18 是表示部分程序 P3 的图。
     图 19 是表示循环处理 R5 ~ R8 的图。
     图 20 是用来说明进行变量表述的等价关系的计算的其他方法的例子的图。具体实施方式
     以下, 参照附图对本发明的实施方式进行说明。
     《实施方式》
     < 概要 >
     图 2 是表示在处理完成时、 对于数组 (array)b[k](0 ≤ k ≤ 99) 能够得到相同的 处理结果的等价的部分程序 P1 和 P4 的图。
     有关实施方式的程序生成装置是将以往的编译器改良的结构, 是通过参照包含图 2(a) 所示的部分程序 P1 的源程序, 生成与以往的编译器通过参照由编程者预先生成的包 含图 2(b) 所示的部分程序 P4 的源程序而生成得到的汇编程序同样的汇编程序的装置。
     这里, 部分程序 P1 是包含具有真相关 (true dependence) 的关系的循环处理 R1 的程序。关于真相关的关系, 在后面详细说明, 是指由在循环控制变量 k 是 i(0 ≤ i < 99) 的情况下执行的块 (block)B1 内的命令语句而定义的变量、 由在循环控制变量 k 是 i+1 的 情况下执行的块 B1 内的命令语句来参照那样的关系。
     具有真相关的关系的命令语句间的执行顺序如果与本来的执行顺序逆转, 则不能 得到正确的结果, 所以该循环处理 R1 一般一边使循环控制变量 k 每次增加 1 一边依次执 行。
     另一方面, 包含在部分程序 P4 中的循环处理 R4 是不具有上述那样的真相关的关 系的处理。因而, 能够使用多个处理器执行。例如, 可以将循环处理 R4 分为循环控制变量 k 从 0 到 49 的部分循环处理、 和循环控制变量 k 从 50 到 99 的部分循环处理、 使两个处理器 独立地并行执行。由此, 与用 1 个处理器依次执行关于循环控制变量 k 从 0 到 99 的循环处 理 R1 的情况相比, 能够更高速地执行循环处理。
     如上所述, 有关实施方式的程序生成装置通过参照包含图 2(a) 所示的部分程序 P1 的源程序, 能够生成与以往的编译器通过参照包含图 2(b) 所示的部分程序 P4 的源程序 生成而得到的汇编程序同样的汇编程序。
     因而, 在在如部分程序 P1 那样、 已经生成了包含具有真相关的关系的循环处理的 源程序的情况下, 能够不重新生成如部分程序 P4 那样、 包含不具有真相关的关系的循环处 理的源程序而生成适合于并行执行的汇编程序, 在这一点上, 有关实施方式的程序生成装 置是有效的。
     另外, 部分程序 P1 虽然如上述那样包含具有真相关的关系的循环处理 R1, 但因为 以下说明的理由, 可以说是与部分程序 P4 相比更适合于单一的处理器中的高速执行的程 序。
     这里, 一般已知通过将程序内的变量尽量分配给寄存器、 能够将程序更高速地执 行。这是因为, 与存储器相比, 向寄存器的访问能够极高速地进行。
     在一般的编译器中, 对于包含在部分程序 P1 中的 a0、 a1、 a2 那样的简单变量分配 特定的寄存器的可能性较高。因而, 在执行部分程序 P1 的情况下, 与执行部分程序 P4 的情 况相比, 能够减少向存储器的访问次数。即, 在使用单一的处理器的情况下, 部分程序 P1 能 够比部分程序 P4 更高速地执行。< 数据的相关关系 >
     使用图 3 对于以上述真相关为代表的数据的相关关系进行说明。
     图 3 是用来说明数据的相关关系的图。
     如该图所示, 由命令语句 ST100 定义的变量 a 处于被在该命令语句 ST100 后执行 的命令语句 ST200 所参照的关系。 在处于这样的关系的情况下, 是指具有从命令语句 ST100 向命令语句 ST200 的 “真相关” 。
     此外, 如该图所示, 被命令语句 ST200 所参照的变量 a, 处于在该命令语句 ST200 后 执行的命令语句 ST300 中被定义的关系。在处于这样的关系的情况下, 是指具有从命令语 句 ST200 向命令语句 ST300 的 “逆相关” (anti-dependence)。
     此外, 如该图所示, 由命令语句 ST100 定义的变量 a, 处于在命令语句 ST300 中被再 定义的关系。在处于这样的关系的情况下, 是指有从命令语句 ST100 向命令语句 ST300 的 “输出相关” (output dependence)。
     此外, 以下, 将作为真相关、 逆相关及输出相关的发生原因的变量称作 “作为相关 的原因的变量” 。在图 3 中, 变量 a 是 “作为相关的原因的变量” 。
     另外, 关于 “逆相关” 和 “输出相关” , 已知在处于相关关系的各命令语句中, 通过将 作为相关的原因的变量的表述替换为相互不同的表述, 能够将该相关删除 ( 例如, 参照非 专利文献 1 的 120 页 )。因此, 有时将 “逆相关” 及 “输出相关” 称作 “名相关” 。 以上述部分程序 P1 中的循环处理 R1 为例, 具体地说明数据的相关关系。
     图 4 是用来说明图 2(a) 所示的循环处理 R1 中的数据的相关关系的图。
     以下, 将在循环控制变量是 m(m 是循环控制变量能够取的任意的值 ) 的情况下执 行的循环内的块称作 “迭代 m” , 将生成迭代 m 称作 “关于 m 的迭代展开” , 将该 m 称作 “迭代 号码” 。
     图 4(a) 表示在图 2(a) 所示的循环处理 R1 中的循环控制变量 k 是 0 的情况下执 行的块 B1、 即迭代 0, 图 4(b) 表示迭代 1。
     这里, 由图 4(a) 所示的迭代 0 的命令语句 ST12、 ST13、 ST14 分别定义的变量 a0、 a1、 a2 处于由图 4(b) 所示的迭代 1 的命令语句 ST21 参照的关系。
     此外, 由图 4(a) 所示的迭代 0 的命令语句 ST13、 ST14 分别定义的变量 a1、 a2 处于 由图 4(b) 所示的迭代 1 的命令语句 ST22、 ST23 参照的关系。
     即, 存在以变量 a0 为相关的原因的、 从命令语句 ST12 向 ST21 的真相关。此外, 存 在以变量 a1 为相关的原因的、 从命令语句 ST13 向 ST21 的真相关以及从命令语句 ST13 向 ST22 的真相关。此外, 存在以变量 a2 为相关的原因的、 从命令语句 ST14 向 ST21 的真相关 以及从命令语句 ST14 向 ST23 的真相关。
     此外, 由图 4(a) 所示的迭代 0 的命令语句 ST12 定义的变量 a0 处于由图 4(b) 所 示的迭代 1 的命令语句 ST22 再定义的关系。
     即, 存在以变量 a0 为相关的原因的、 从命令语句 ST12 向 ST22 的输出相关。同样, 存在以变量 a1 为相关的原因的、 从命令语句 ST13 向 ST23 的输出相关, 存在以变量 a2 为相 关的原因的、 从命令语句 ST14 向 ST24 的输出相关。
     此外, 由图 4(b) 所示的迭代 1 的命令语句 ST21 参照的变量 a0、 a1、 a2 处于由命令 语句 ST22 ~ ST24 分别定义的关系。即, 存在以变量 a0 为相关的原因的、 从命令语句 ST21
     向 ST22 的逆相关, 存在以变量 a1 为相关的原因的、 从命令语句 ST21 向 ST23 的逆相关, 存 在以变量 a2 为相关的原因的、 从命令语句 ST21 向 ST24 的逆相关。
     此外, 在迭代 0 中也同样, 存在以变量 a0、 变量 a1、 变量 a2 为相关的原因的逆相 关。
     另外, 以下, 将循环处理中的、 存在从某个迭代内的命令语句向其他迭代内的命令 语句的相关的情况也称作 “在迭代间有相关关系” 。
     < 结构 >
     图 1 是表示包括有关实施方式的程序生成装置 100 的编译器系统 1000 的结构的 块图。
     编译器系统 1000 是通过参照包含如上述部分程序 P1 那样、 在迭代间有真相关的 关系的循环处理的源程序 11, 从而生成能够实现由多个处理器进行的循环处理的并行执行 的目标程序 14 的系统。
     编译器系统 1000 由包括处理器 ( 未图示 )、 存储器 ( 未图示 )、 和硬盘等的存储装 置 10 的计算机 ( 例如, PC(Personal Computer : 个人电脑 )) 实现。
     编译器系统 1000 如该图所示, 包括存储装置 10、 程序生成装置 100、 汇编器 210、 和 链接器 (linker)220 而构成。另外, 程序生成装置 100、 汇编器 210 及链接器 220 的各功能 通过上述处理器将存储在存储装置 10 中的未图示的程序读入到上述存储器中、 执行所读 入的程序来实现。 这里, 程序生成装置 100 是将以往的编译器改良的结构, 具有参照存储在存储装 置 10 中的、 用 C 语言或 C++ 语言等的高级语言记述的源程序 11 而生成汇编程序 12 的功能。 程序生成装置 100 将所生成的汇编程序 12 向存储装置 10 保存。
     即, 程序生成装置 100 通过参照包含在迭代间有真相关的关系的循环处理的源程 序 11, 生成用来执行消除了该真相关的关系的循环处理的汇编程序 12。
     此外, 汇编器 210 具有参照由程序生成装置 100 向存储装置 10 保存的汇编程序 12、 生成由机器语言记述的浮动的二进制程序 (relocatable binary program)13 的功能。 汇编器 210 将所生成的浮动二进制程序 13 向存储装置 10 保存。
     此外, 链接器 220 具有通过决定在由汇编器 210 向存储装置 10 保存的浮动二进制 程序 13 中未解决的数据的地址配置等, 通过与需要的库等连结, 从而生成计算机能够执行 的目标程序 14 的功能。链接器 220 将所生成的目标程序 14 向存储装置 10 保存。
     以下, 使用图 1 对程序生成装置 100 的结构更详细地说明。
     如该图所示, 程序生成装置 100 具备存储部 110、 取得部 120、 计算部 130、 确定部 140、 和生成部 150。
     这里, 存储部 110 是用来将源程序 11、 以及计算部 130、 确定部 140 及生成部 150 的处理结果保存的存储器区域。
     即, 以下虽然没有特别明述, 但假设计算部 130、 确定部 140 及生成部 150 间的处理 结果的交换是经由存储部 110 进行的。
     此外, 取得部 120 具有从存储装置 10 读出源程序 11、 保存到存储部 110 中的功能。
     计算部 130 具有计算关于在由取得部 120 保存到存储部 110 中的源程序 11 中包 含的循环处理中的、 某个迭代及其他 1 个以上的迭代的变量表述的等价关系的功能。计算
     部 130 包括迭代展开部 131、 名相关删除部 132、 和等价关系计算部 133。
     这里, 迭代展开部 131 具有基于包含在源程序 11 中的循环处理进行迭代展开 (expanding iteration) 的功能。
     名相关删除部 132 具有将在迭代展开部 131 进行了迭代展开的、 迭代号码连续的 两个迭代间存在的名相关 ( 即, 输出相关及逆相关 ) 删除的功能。
     这里, 使用与将处于相关关系的两个命令语句中的作为相关的原因的变量的表述 替换为相互不同的表述的以往以来进行的方法同样的方法, 进行名相关的删除。
     等价关系计算部 133 具有计算关于由名相关删除部 132 将名相关删除后的上述两 个迭代的各命令语句的变量表述的等价关系的功能。这里, 假设使用与在专利文献 2 中说 明的方法同样的方法进行变量表述的等价关系的计算。
     此外, 确定部 140 具有基于等价关系计算部 133 计算出的变量表述的等价关系、 判 断是否能够通过将作为存在于上述两个迭代间的真相关的原因的全部的变量替换为等价 的没有相关关系的其他变量及式子, 从而将全部的真相关删除的功能。
     此外, 确定部 140 具有进行基于该判断结果控制计算部 130 对变量表述的等价关 系的计算的执行的功能及以下说明的判断的功能。即, 该判断是判断是否能够将包含在源 程序 11 中的循环处理内的块用由以下说明的生成部 150 生成的迭代变形候选来替换。 生成部 150 具有当确定部 140 判断为能够将存在于上述两个迭代间的全部的真相 关删除时、 基于将全部的真相关删除后的迭代来生成迭代变形候选的功能。
     详细在后面叙述 ( 参照图 13(a) 及图 13(b)), 但迭代变形候选是将删除了上述全 部的真相关的迭代一般化 (generalizing)、 以便在该迭代号码以后的迭代中也能够使用 的。
     此外, 生成部 150 具有当确定部 140 判断为能够将包含在源程序 11 中的循环处理 内的块用迭代变形候选替换时、 生成汇编程序 12 的功能。该汇编程序 12 基于将包含在源 程序 11 中的循环处理内的块用迭代变形候选替换后的源程序。
     < 动作 >
     以下, 说明程序生成装置 100 的动作。
     图 5 ~图 7 是表示由程序生成装置 100 进行的程序生成处理的流程图。
     程序生成装置 100 的取得部 120 从存储装置 10 读出源程序 11, 保存到存储部 110 中。计算部 130 的迭代展开部 131 进行关于表示包含在源程序 11 中的循环处理中的循环 控制变量的任意的值的 i、 和 i+1 的迭代展开 ( 图 5 的步骤 S1)。
     计算部 130 的名相关删除部 132 确定迭代 i 及迭代 i+1 的各命令语句间的相关关 系 ( 步骤 S2)。此外, 名相关删除部 132 通过将作为名相关 ( 即, 输出相关和逆相关 ) 的原 因的变量的表述变更, 将名相关删除 ( 步骤 S3)。
     计算部 130 的等价关系计算部 133 计算关于删除了名相关的迭代 i 及迭代 i+1 的 各命令语句的变量表述的等价关系 ( 步骤 S4)。
     该变量表述的等价关系的计算方法如上所述, 是与在专利文献 2 中说明的方法同 样的方法, 所以以下简单地说明, 但作为结果能够得到图 10 所示那样的等价式集合。
     这里, 将图 10(a) 及图 10(b) 所示的用 “{” 和 “}” 括起的部分称作 “等价式集合” 、 将在等价式集合中记载的用 “(” 和 “)” 括起的部分称作 “等价式” 。此外, 在等价式中记载
     的用 “, ” 分隔的各要素表示是等价的。
     首先, 等价关系计算部 133 将迭代 i 及迭代 i+1 的各命令语句 1 个 1 个依次作为 处理对象而进行以下的处理。
     即, 等价关系计算部 133 判断包含记述在作为处理对象的命令语句的右边或左边 的变量及式子的等价式是否已经包含在等价式集合中。
     在判断为对应的等价式不包含在等价式集合中的情况下, 将关于作为处理对象的 命令语句的新的等价式追加到等价式集合中。
     此外, 在判断为包含记述在作为处理对象的命令语句的右边的变量及式子的等价 式已经包含在等价式集合中的情况下, 作为该等价式的要素, 追加记述在这个作为处理对 象的命令语句的左边的变量及式子。
     此外, 在判断为包含记述在作为处理对象的命令语句的左边的变量及式子的等价 式已经包含在等价式集合中的情况下, 代替该等价式而将关于作为处理对象的命令语句的 新的等价式追加到等价式集合中。
     说明程序生成处理的后续 ( 参照图 5)。
     如果步骤 S4 的处理完成, 则确定部 140 基于等价关系计算部 133 计算出的变量表 述的等价关系, 判断是否能够将全部的真相关删除 ( 步骤 S5)。
     更详细地讲, 在能够将作为真相关的原因的全部的变量的表述基于在步骤 S4 中 计算出的变量表述的等价关系、 替换为在步骤 S2 中确定的作为相关的原因的变量及在步 骤 S3 中为了将名相关删除而导入的变量以外的等价的变量及式子的表述的情况下, 判断 为能够将全部的真相关删除 ( 步骤 S5 : 是 )。
     这里, 不替换为在步骤 S2 中确定的作为相关的原因的变量及在步骤 S3 中为了将 名相关删除而导入的变量的表述是因为, 这样的变量有可能在其他迭代中成为新的相关的 原因。即, 这是因为, 如果替换为这样的变量的表述, 结果也有可能没有将迭代间的相关删 除。
     在判断为能够将全部的真相关删除的情况下 ( 步骤 S5 : 是 ), 作为能够将全部的真 相关删除的迭代 i+m 的 m 的值而设定 “1” ( 步骤 S6), 前进到图 6 的步骤 S15 的处理。
     此外, 在判断为不能将全部的真相关删除的情况下 ( 步骤 S5 : 否 ), 确定部 140 将 上述 m 的值设定为 “2” ( 图 6 的步骤 S7)。
     此外, 确定部 140 判断 m 的值是否比从包含在源程序 11 中的循环控制变量能够 取的最大值 ( 以下, 表述为 “kmax” ) 减去该循环控制变量能够取的最小值 ( 以下, 表述为 “kmin” ) 后的值小 ( 步骤 S8)。
     在 m 的值是从 kmax 减去 kmin 的值以上的情况下 ( 步骤 S8 : 否 ), 为不能将真相关 删除, 程序生成装置 100 结束程序生成处理 ( 参照图 7)。
     另一方面, 在 m 的值比从 kmax 减去 kmin 的值小的情况下 ( 步骤 S8 : 是 ), 确定部 140 通过通知 m 的值, 对计算部 130 指示处理。指示了处理的计算部 130 的迭代展开部 131 与步骤 S1 的处理同样, 进行关于 i+m 的迭代展开 ( 步骤 S9)。
     此外, 名相关删除部 132 与步骤 S2 的处理同样, 确定迭代 i+m-1 及迭代 i+m 的各 命令语句间的相关关系 ( 步骤 S10), 与步骤 S3 的处理同样, 将名相关删除 ( 步骤 S11)。
     此外, 等价关系计算部 133 与步骤 S4 的处理同样, 计算关于删除了名相关的迭代i+m-1 及迭代 i+m 的各命令语句的变量表述的等价关系 ( 步骤 S12)。
     接着, 确定部 140 与步骤 S5 的处理同样, 基于在步骤 S12 中由等价关系计算部 133 计算出的变量表述的等价关系, 判断是否能够将全部的真相关删除 ( 步骤 S13)。
     这里, 确定部 140 因与在步骤 S5 中说明的同样的理由, 将在步骤 S2 及 S10 中确定 的作为相关的原因的变量及在步骤 S3 和 S11 中为了将名相关删除而导入的变量的表述用 于置换。
     在判断为不能将全部的真相关的情况下 ( 步骤 S13 : 否 ), 确定部 140 使 m 的值增 加 1 个 ( 步骤 S14), 再次从步骤 S8 起进行处理。
     另一方面, 在确定部 140 判断为能将全部的真相关删除的情况下 ( 步骤 S13 : 是 ), 生成部 150 基于将全部的真相关删除后的迭代 i+m 生成迭代变形候选 ( 步骤 S15)。
     这里, i 表示包含在源程序 11 中的循环处理中的循环控制变量的任意的值。 因而, 在迭代 i+m 中能够将全部的真相关删除意味着在迭代 kmin+m 以后的迭代中能够将全部的 真相关删除。
     所以, 生成部 150 生成进行一般化以使得在迭代号码为 kmin+m 到 kmax 的迭代中 也能够使用的迭代变形候选。 接着, 确定部 140 通过通知 kmin 及 m-1 的值, 对计算部 130 指示处理。被指示了 处理的计算部 130 的迭代展开部 131 与步骤 S1 的处理同样, 进行对从 kmin 到 m-1 各自的 迭代展开 ( 图 7 的步骤 S16)。
     此外, 名相关删除部 132 对于从迭代 kmin 到迭代 m-1 的每个迭代, 分别与步骤 S2 的处理同样, 确定各命令语句间的相关关系 ( 步骤 S17), 与步骤 S3 的处理同样, 将名相关删 除 ( 步骤 S18)。
     此外, 等价关系计算部 133 与步骤 S4 的处理同样, 计算关于将名相关删除后的迭 代 kmin 到迭代 m-1 的各自的各命令语句的变量表述的等价关系 ( 步骤 S19)。
     接着, 确定部 140 与步骤 S5 的处理同样, 基于在步骤 S19 中等价关系计算部 133 计算出的变量表述的等价关系, 判断是否能够将全部的真相关删除 ( 步骤 S20)。
     在确定部 140 判断为不能将全部的真相关删除的情况下 ( 步骤 S20 : 否 ), 认为循 环控制变量在从 kmin 到 m-1 的范围中不能将真相关删除, 程序生成装置 100 结束程序生成 处理。
     此外, 在确定部 140 判断为能够将全部的真相关删除的情况下 ( 步骤 S20 : 是 ), 判 断将全部的真相关删除后的迭代 kmin 到迭代 m-1 是否是与在步骤 S15 中生成的迭代变形 候选中的迭代 kmin 到迭代 m-1 相同形式 ( 步骤 S21)。
     在确定部 140 判断为不是相同形式的情况下 ( 步骤 S21 : 否 ), 程序生成装置 100 结束程序生成处理。这是因为, 在此情况下, 不能将能够应用在循环控制变量为从 kmin 到 m-1 的范围中的删除了真相关的循环处理、 与能够应用到循环控制变量为从 m 到 kmax 的范 围中的删除了真相关的循环处理集中为 1 个循环处理。
     另一方面, 在确定部 140 判断为与迭代变形候选中的迭代 kmin 到迭代 m-1 相同形 式的情况下 ( 步骤 S21 : 是 ), 生成部 150 如以下这样生成汇编程序 12( 步骤 S22)。即, 生 成部 150 在对将源程序 11 的循环处理内的块替换为迭代变形候选的程序进行优化和并行 化 (parallelizing) 后, 生成汇编程序 12。
     另外, 优化和并行化可以通过以往以来进行的方法实现, 所以这里省略详细的说 明, 关于进行了优化和并行化后的程序的具体例在后面叙述 ( 参照图 18)。
     生成部 150 将所生成的汇编程序 12 保存到存储装置 10 中, 程序生成装置 100 结 束程序生成处理。
     < 具体例 >
     以下, 以设源程序 11 包含图 2(a) 所示的部分程序 P1 的情况为例, 按照图 5 ~图 7 所示的流程图说明程序生成装置 100 的动作。
     程序生成装置 100 的取得部 120 从存储装置 10 读出源程序 11, 保存到存储部 110 中。计算部 130 的迭代展开部 131 进行关于表示包含在源程序 11 中的循环处理 ( 在该例 中是 R1) 中的循环控制变量 ( 在该例中是 k) 的任意的值的 i 和 i+1 的迭代展开 ( 图 5 的 步骤 S1)。
     图 8(a) 是表示图 2(a) 所示的循环处理 R1 中的迭代 i 的图, 图 8(b) 是表示迭代 i+1 的图。
     计算部 130 的名相关删除部 132 确定迭代 i 及迭代 i+1 的各命令语句间的相关关 系 ( 步骤 S2)。此外, 名相关删除部 132 通过变更作为名相关 ( 即, 输出相关和逆相关 ) 的 原因的变量的表述, 将名相关删除 ( 步骤 S3)。 在图 8(a) 及图 8(b) 所示的例子中, 以变量 a0 为相关的原因, 存在从命令语句 ST42 向命令语句 ST51 的真相关、 从命令语句 ST42 向命令语句 ST52 的输出相关、 从命令语 句 ST41 向命令语句 ST42 的逆相关、 和从命令语句 ST51 向 ST52 的逆相关。
     此外, 以变量 a1 为相关的原因, 存在从命令语句 ST43 向命令语句 ST51 的真相关、 从命令语句 ST43 向命令语句 ST53 的输出相关、 从命令语句 ST41 向命令语句 ST43 的逆相 关、 和从命令语句 ST51 向 ST53 的逆相关。
     此外, 以变量 a2 为相关的原因, 存在从命令语句 ST44 向命令语句 ST51 的真相关、 从命令语句 ST44 向命令语句 ST54 的输出相关、 从命令语句 ST41 向命令语句 ST44 的逆相 关、 和从命令语句 ST51 向 ST54 的逆相关。
     通过将命令语句 ST42 中的变量 a0 的表述变更为 “a0_i” 、 将命令语句 ST52 中的变 量 a0 的表述变更为 “a0_i1” , 能够将以变量 a0 为相关的原因的名相关删除。
     此外, 与变量 a0 的情况同样, 通过将命令语句 ST43 中的变量 a1 的表述变更为 “a1_i” 、 将命令语句 ST53 中的变量 a1 的表述变更为 “a1_i1” , 能够将以变量 a1 为相关的原 因的名相关删除。此外, 通过将命令语句 ST44 中的变量 a2 的表述变更为 “a2_i” 、 将命令 语句 ST54 中的变量 a2 的表述变更为 “a2_i1” , 能够将以变量 a2 为相关的原因的名相关删 除。
     图 9(a) 是表示从图 8(a) 所示的迭代 i 中删除了名相关的迭代 i 的图, 图 9(b) 是 表示从图 8(b) 所示的迭代 i+1 删除了名相关的迭代 i+1 的图。
     另外, 在步骤 S3 的处理中, 由于仅将名相关删除, 所以真相关继续存在。即, 在图 9(a) 及图 9(b) 所示的例子中, 存在从命令语句 ST46、 ST47、 ST48 向命令语句 ST55 的以变 量 a0_i、 a1_i、 a2_i 为相关的原因的真相关、 和从命令语句 ST47、 ST48 向命令语句 ST56、 ST57 的以变量 a1_i、 a2_i 为相关的原因的真相关。
     计算部 130 的等价关系计算部 133 计算关于将名相关删除后的迭代 i 及迭代 i+1
     的各命令语句的变量表述的等价关系 ( 步骤 S4)。
     如果对图 9(a) 及图 9(b) 所示的将名相关删除后的迭代 i 及迭代 i+1 的各命令语 句 (ST45 ~ ST48、 ST55 ~ ST58) 计算变量表述的等价关系, 则为以下这样。
     另外, 假设在以下的说明开始时点, 在等价式集合中哪个等价式都不包括。
     首先, 在以图 9(a) 所示的命令语句 ST45 为处理对象的情况下, 由于包括记述在 命令语句 ST45 的右边及左边中的变量及式子的等价式不包含在等价式集合中, 所以如图 10(a) 所示的等价式集合 E45 那样, 将关于命令语句 ST45 的等价式追加到等价式集合中。
     即, 等 价 式 集 合 E45 表 示 在 刚 刚 执 行 命 令 语 句 ST45 之 后、 变量 “b[i]”和 式 “a0+a1+a2” 处于等价的关系。
     在以图 9(a) 所示的命令语句 ST46 ~ ST48 及图 9(b) 的命令语句 ST55 为处理对象 的情况下, 也与命令语句 ST45 的情况同样地处理 ( 参照图 10(a) 的等价式集合 E46 ~ E48 及图 10(b) 的等价式集合 E55)。
     此外, 在以图 9(b) 所示的命令语句 ST56 为处理对象的情况下, 包含记述在命令语 句 ST56 的右边的变量 ( 在该例中是 “a1_i” ) 的等价式 ( 在该例中是 (a1_i, a2)) 已经包 含在等价式集合 E55 中。因而, 在该等价式中, 追加了记述在命令语句 ST56 的左边的变量 ( 在该例中是 “a0_i1” )( 参照图 10(b) 的等价式集合 E56)。 在以图 9(b) 所示的命令语句 ST57 为处理对象的情况下, 也与命令语句 ST56 的情 况同样地处理 ( 参照图 10(b) 的等价式集合 E57)。
     此外, 在以图 9(b) 所示的命令语句 ST58 为处理对象的情况下, 与命令语句 ST45 的情况同样, 将关于命令语句 ST58 的等价式追加到等价式集合 E57 中 ( 参照图 10(b) 的等 价式集合 E58)。
     接着, 确定部 140 基于在步骤 S4 中等价关系计算部 133 计算出的变量表述的等价 关系, 判断是否能够将全部的真相关删除 ( 步骤 S5)。
     如上所述, 在图 9(a) 及图 9(b) 所示的例子中, 存在以变量 a0_i、 a1_i、 a2_i 为相 关的原因的真相关。
     根据图 10(a) 所示的等价式集合 E48, 作为真相关的原因的变量 “a2_i” 与变量 “a[i+3]” 是等价的。此外, 该变量 “a[i+3]” 不是在步骤 S2 中确定的作为相关的原因的变 量以及在步骤 S3 中为了将名相关删除而导入的变量。因而, 能够将变量 “a2_i” 的表述替 换为变量 “a[i+3]” 的表述。
     此外, 根据等价式集合 E48, 作为真相关的原因的变量 “a0_i” 与变量 “a1” 是等价 的, 作为真相关的原因的变量 “a1_i” 与变量 “a2” 是等价的。但是, 变量 “a1” 及变量 “a2” 由于是在步骤 S2 中确定的作为相关的原因的变量, 所以不能进行作为真相关的原因的变 量 “a0_i” 及变量 “a1_i” 的各表述的替换。
     因而, 确定部 140 判断为不能将全部的真相关删除 ( 步骤 S5 : 否 )。
     确定部 140 将 m 的值设定为 “2” ( 图 6 的步骤 S7), 在该例中, 由于 m 的值比从 kmax( 在该例中是 “99” ) 减去 kmin( 在该例中是 “0” ) 后的值小 ( 步骤 S8 : 是 ), 所以通知 m 的值 ( 在该例中是 “2” ), 对计算部 130 指示处理。
     迭代展开部 131 与步骤 S1 的处理同样, 进行关于 i+m( 在该例中是 “i+2” ) 的迭代 展开 ( 步骤 S9)。
     此外, 计算部 130 的名相关删除部 132 关于迭代 i+m-1( 在该例中是 “i+1” ) 和迭 代 i+m, 与步骤 S3 的处理同样, 将名相关删除 ( 步骤 S11)。
     此外, 计算部 130 的等价关系计算部 133 与步骤 S4 的处理同样, 计算关于将名相 关删除后的迭代 i+m-1 及迭代 i+m 的各命令语句的变量表述的等价关系 ( 步骤 S12)。
     图 11(a) 是表示将名相关删除后的迭代 i+2 的图, 图 11(b) 是表示计算关于将名 相关删除后的迭代 i+2 的各命令语句的变量表述的等价关系的结果的图。
     这里, 图 11(b) 所示的等价式集合 E65 为基于图 11(a) 所示的命令语句 ST65、 将等 价式 “(b[i+2], a0_i1+a1_i1+a2_i1)” 追加到图 10(b) 所示的等价式集合 E58 中的结果。
     确定部 140 与步骤 S5 的处理同样, 基于在步骤 S12 中等价关系计算部 133 计算出 的变量表述的等价关系, 判断是否能够将全部的真相关删除 ( 步骤 S13)。
     在图 9(b) 及图 11(a) 所示的例子中, 存在以变量 a0_i1、 a1_i1、 a2_i1 为相关的原 因的真相关。
     根据图 10(b) 所示的等价式集合 E58, 作为真相关的原因的变量 “a2_i1” 与变量 “a[i+4]” 是等价的, 作为真相关的原因的变量 “a1_i1” 与变量 “a[i+3]” 是等价的。此外, 变量 “a[i+4]” 及变量 “a[i+3]” 不是在步骤 S2 及 S10 中确定的作为相关的原因的变量以 及在步骤 S3 及 S7 中为了将名相关删除而导入的变量。
     因而, 能够将变量 “a2_i1” 的表述替换为变量 “a[i+4]” 的表述、 将变量 “a1_i1” 的表述替换为变量 “a[i+3]” 的表述。
     此外, 根据等价式集合 E58, 作为真相关的原因的变量 “a0_i1” 与变量 “a1_i” 及变 量 “a2” 是等价的。但是, 变量 “a1_i” 是在步骤 S3 中为了将名相关删除而使用的变量, 变 量 “a2” 是在步骤 S2 中确定的作为相关的原因的变量。因而, 不能进行作为真相关的原因 的变量 “a0_i1” 的表述的替换。由此, 确定部 140 判断为不能将全部的真相关删除 ( 步骤 S13 : 否 )。
     在该例中, 确定部 140 使 m 的值增加 1 而设为 “3” ( 步骤 S14), 由于 m 的值比从 kmax( 在该例中是 “99” ) 减去 kmin( 在该例中是 “0” ) 后的值小 ( 步骤 S8 : 是 ), 所以通知 m 的值而对计算部 130 指示处理。被指示了处理的计算部 130 与上述同样, 进行步骤 S9 ~ 步骤 S12 的处理。
     图 12(a) 是表示将名相关删除后的迭代 i+3 的图, 图 12(b) 是表示计算关于将名 相关删除后的迭代 i+3 的各命令语句的变量表述的等价关系的结果的图。
     在图 11(a) 及图 12(a) 所示的例子中, 存在以变量 a0_i2、 a1_i2、 a2_i2 为相关的 原因的真相关。
     根据图 11(b) 所示的等价式集合 E68, 作为真相关的原因的变量 “a2_i2” 与变量 “a[i+5]” 是等价的, 作为真相关的原因的变量 “a1_i2” 与变量 “a[i+4]” 是等价的, 作为真 相关的原因的变量 “a0_i2” 与变量 “a[i+3]” 是等价的。 此外, 变量 “a[i+5]” 、 变量 “a[i+4]” 及变量 “a[i+3]” 不是在步骤 S2 及 S10 中确定的作为相关的原因的变量以及在步骤 S3 及 S7 中为了将名相关删除而导入的变量。
     因而, 能够将变量 “a2_i2” 的表述替换为变量 “a[i+5]” 的表述、 将变量 “a1_i2” 的表述替换为变量 “a[i+4]” 的表述、 将变量 “a0_i2” 的表述替换为变量 “a[i+3]” 的表述。
     由此, 确定部 140 判断为能将全部的真相关删除 ( 步骤 S13 : 是 ), 生成部 150 基于不能删除全部的真相关的迭代 i+m( 在该例中是 “i+3” ) 生成迭代变形候选 ( 步骤 S15)。
     图 13(a) 是表示将全部的真相关删除后的迭代 i+3 的图。
     在图 13(a) 所示的例子中, 生成部 150 将 “i+3” 设置为 k, 生成将变量 “a0_i3” 的 表述替换为变量 “a0_k” 的表述、 将变量 “a1_i3” 的表述替换为变量 “a1_k” 的表述、 将变量 “a2_i3” 的表述替换为变量 “a2_k” 的表述的迭代变形候选。
     图 13(b) 是表示生成部 150 生成的迭代变形候选的图。
     该迭代变形候选能够应用到 k 为 kmin+m( 在该例中是 “3” ) 到 kmax( 在该例中是 “99” ) 的迭代中。即, 至少在 3 ≤ k < kmax 的范围中, 能够将图 2(a) 所示的循环处理 R1 的块 B1 替换为在迭代间没有相关的等价的块。
     接着, 确定部 140 通知 kmin( 在该例中是 “0” ) 及 m-1( 在该例中是 “2” ) 的值, 对 计算部 130 指示处理。被指示了处理的计算部 130 的迭代展开部 131 与步骤 S1 的处理同 样, 进行关于从 kmin 到 m-1 的各自的迭代展开 ( 图 7 的步骤 S16)。
     此外, 名相关删除部 132 关于从迭代 kmin 到迭代 m-1, 与步骤 S2 同样, 确定各命令 语句间的相关关系 ( 图 7 的步骤 S17), 与步骤 S3 的处理同样, 将名相关删除 ( 步骤 S18)。
     图 14(a) 所示的迭代 I1 ~ I3 表示图 2(a) 所示的循环处理 R1 中的迭代 0 ~ 2。
     此外, 图 14(b) 所示的迭代 I10 ~ I30 表示从图 14(a) 所示的迭代 0 ~ 2 中将名 相关删除后的迭代 0 ~ 2 的。此外, 图 14(b) 所示的命令语句 ST1 ~ ST3 是处于图 2(a) 所 示的循环处理 R1 的之前的紧挨着的 (immediately before) 命令语句 ST1 ~ ST3。
     等价关系计算部 133 与步骤 S4 的处理同样, 计算关于将名相关删除后的迭代 kmin 到迭代 m-1 的各自的各命令语句的变量表述的等价关系 ( 步骤 S19)。
     图 15 是表示计算关于图 14(b) 所示的命令语句 ST1 ~ ST3 及将名相关删除后的 迭代 0 ~ 1 的各命令语句的变量表述的等价关系的结果的图。
     此外, 图 16 是表示计算关于图 14(b) 所示的将名相关删除后的迭代 2 的各命令语 句的变量表述的等价关系的结果的图。
     接着, 确定部 140 与步骤 S5 的处理同样, 基于在步骤 S19 中等价关系计算部 133 计算出的变量表述的等价关系, 判断是否能够将全部的真相关删除 ( 步骤 S20)。
     根据图 15 所示的等价式集合 E3, 作为真相关的原因的变量 “a0” 与变量 “a[0]” 是 等价的, 作为真相关的原因的变量 “a1” 与变量 “a[1]” 是等价的, 作为真相关的原因的变量 “a2” 与变量 “a[2]” 是等价的。此外, 变量 “a[0]” 、 变量 “a“1” ” 及变量 “a[2]” 不是在步骤 S17 中确定的作为相关的原因的变量以及在步骤 S18 中为了将名相关删除而导入的变量。
     因 而, 能 够 将 图 14(b) 所 示 的 命 令 语 句 ST15 的 变 量 “a0”的 表 述 替 换 为 变 量 “a[0]” 的表述、 将变量 “a1” 的表述替换为变量 “a[1]” 的表述、 将变量 “a2” 的表述替换为 变量 “a[2]” 的表述。
     同样, 能够基于图 15 所示的等价式集合 E15、 将图 14(b) 所示的命令语句 ST16 的 变量 “a1” 的表述替换为变量 “a[1]” 的表述。此外, 能够基于图 15 所示的等价式集合 E16、 将图 14(b) 所示的命令语句 ST17 的变量 “a2” 的表述替换为变量 “a[2]” 的表述。
     同样, 能够基于图 15 所示的等价式集合 E18 ~ E26、 将图 14(b) 所示的命令语句 ST25 ~ ST27 的变量 “a0_0” 、 变量 “a1_0” 及变量 “a2_0” 的表述替换。此外, 能够基于图 15 所示的等价式集合 E28 及图 16 所示的等价式集合 E35、 E36、 将命令语句 ST35 ~ ST37 的变量 “a0_1” 、 变量 “a1_1” 及变量 “a2_1” 的表述替换。
     因而, 确定部 140 判断为能够将全部的真相关删除 ( 步骤 S20 : 是 ), 判断将全部的 真相关删除后的迭代 kmin( 在该例中是 “0” ) 到迭代 m-1( 在该例中是 “2” ) 是否是与在步 骤 S15 中生成的迭代变形候选中的迭代 kmin 到迭代 m-1 相同形式 ( 步骤 S21)。
     图 17(a) 所示的迭代 I11、 I21、 I31 表示从图 14(b) 所示的将名相关删除后的迭代 0 ~ 2(I10、 I20、 I30) 中将真相关删除后的迭代。
     图 13(b) 所示的关于迭代变形候选的迭代 0、 迭代 1、 迭代 3 与图 17(a) 所示的迭 代 I11、 I21、 I31 一致。因而, 在该例中, 确定部 140 判断为相同形式 ( 步骤 S21 : 是 ), 生成 部 150 将源程序 11 的循环处理 R1 的块 B1 替换为迭代变形候选而生成基于优化和并行化 的程序的汇编程序 12( 步骤 S22)。
     图 17(b) 表示将图 2(a) 所示的部分程序 P1 的块 B1 替换为图 13(b) 所示的迭代 变形候选的部分程序 P2。
     在该部分程序 P2 中, 由命令语句 ST1 ~ ST3 定义的变量 “a0” 、 变量 “a1” 及变量 “a2” 、 由命令语句 ST92 ~ ST94 定义的变量 “a0_k” 、 变量 “a1_k” 及变量 “a2_k” 没有由部分 程序 P2 内的命令语句参照。因而, 在源程序 11 中的部分程序 P2 以外的部分中, 也能够以 不参照这些变量为条件、 生成将命令语句 ST1 ~ ST3、 说明 (declare) 变量 “a0” 、 变量 “a1” 及变量 “a2” 的命令语句 ST4、 和命令语句 ST92 ~ ST94 删除的优化的部分程序 P3( 参照图 18)。 此外, 生成部 150 生成将部分程序 P3 并行化后的部分程序 P4( 参照图 2(b))。此 外, 生成部 150 将基于包含该部分程序 P4 的源程序而生成的汇编程序 12 保存到存储装置 10 中, 程序生成装置 100 结束程序生成处理。
     另外, 图 2(b) 所示的部分程序 P4 中的用于指示并行化的记述是遵循 OpenMP 的记 述形式的。
     《补充》
     以上, 基于实施方式说明了有关本发明的程序生成装置, 但也可以如以下这样变 形, 本发明当然并不限定于在上述实施方式中表示那样的程序生成装置。
     (1) 有关实施方式的程序生成装置 100 以根据包含了在迭代号码连续的两个迭代 间具有真相关的关系的循环处理的源程序 11 来生成汇编程序 12 的情况为例进行了说明。 但是, 也可以根据包含了在迭代号码不连续的两个迭代间具有真相关的关系的循环处理 ( 例如, 图 19(a) 所示的循环处理 R5、 及图 19(c) 所示的循环处理 R7) 的源程序 11 来生成 汇编程序 12。 另外, 图 19(b) 表示与循环处理 R5 等价的不具有上述真相关的关系的循环处 理 R6。此外, 图 19(d) 表示与循环处理 R7 等价的不具有上述真相关的关系的循环处理 R8。
     为此, 在由图 5 的步骤 S2 的处理确定相关关系的结果是不存在真相关的关系的情 况下, 进行确定具有真相关的关系的两个迭代的处理。
     即, 对迭代号码 s(i+2 ≤ s < N) 进行迭代展开, 确定迭代 i 及迭代 s 的各命令语句 间的相关关系。在不存在真相关的关系的情况下, 一边将 s 一个一个增加, 一边反复进行上 述迭代展开及相关关系的确定, 在存在真相关的关系的情况下, 将步骤 S3、 S4 中的迭代 i+1 替换为迭代 s, 进行步骤 S3、 S4 的处理。
     此外, 进行变更以将步骤 S6 的 m 设定为 s、 进行变更以将图 6 的步骤 S7 的 m 设定
     为 s+1, 在步骤 S8 以后, 能够与由实施方式说明同样进行处理。
     这样, 根据有关该变形的程序生成装置, 例如通过参照包含图 19(a) 所示的循环 处理 R5、 及图 19(c) 所示的循环处理 R7 的源程序, 能够生成与以往的编译器通过参照包含 图 19(b) 所示的循环处理 R6 及图 19(d) 所示的循环处理 R8 的源程序而生成得到的汇编程 序同样的汇编程序。
     (2) 有关实施方式的程序生成装置 100 设为在图 7 的步骤 S21 中、 在将全部的真 相关删除后的迭代 kmin 到迭代 m-1 与在图 6 的步骤 S15 中生成的迭代变形候选中的迭代 kmin 到迭代 m-1 不是相同形式的情况下 ( 步骤 S21 : 否 )、 不生成汇编程序 12 而结束程序 生成处理的结构进行了说明。但是, 也可以将循环处理分为循环控制变量为 kmin 到 m-1 的 范围的部分循环处理 X、 和循环控制变量为 m 到 kmax 的范围的部分循环处理 Y, 生成能够将 循环处理 Y 由多个处理器并行执行而构成的汇编程序 12。
     (3) 有关实施方式的程序生成装置 100 设为通过参照源程序 11 而生成汇编程序 12 的结构进行了说明。 但是, 也可以是, 程序生成装置变形为具备汇编器 210 及链接器 220, 有关该变形的程序生成装置通过参照源程序 11 来生成目标程序 14。
     此外, 有关实施方式的链接器 220 设为将决定了未解决的数据的地址配置等的浮 动二进制程序 13 与需要的库等连结的结构进行了说明, 但当然也可以将多个浮动二进制 程序 13 彼此连结。 (4) 有关实施方式的程序生成装置 100 中的计算部 130 的等价关系计算部 133 设 为使用与在专利文献 2 中说明的方法同样的方法进行变量表述的等价关系的计算的结构 而进行了说明, 但它是一例, 也可以通过其他方法计算。
     例如, 也可以利用命令语句 “x = y”中的、 在 x 中保存有与 y 相同的值的关系、 即 x 与 y 为等价的关系, 通过反复进行替换命令语句的表述 ( 以下称作 “复制传播” (copy propagation)) 的方法来计算。
     以下, 简单地说明该方法。
     例如, 通过对图 8(a) 所示的迭代 i 的命令语句 ST44 “a2 = a[i+3]” 进行复制传播, 由此, 将图 8(b) 所示的迭代 i+1 的命令语句 ST51 的表述替换为 “b[i+1] = a0+a1+a[i+3]” 、 将命令语句 ST53 的表述替换为 “a1 = a[i+3]” 。
     此外, 通过对该替换后的命令语句 ST53 和命令语句 ST54 进行复制传播, 将图 20(a) 所示的迭代 i+2 的命令语句 ST61 的表述替换为 “b[i+2] = a0+a[i+3]+a[i+4]” 。此 外, 将命令语句 ST62 的表述替换为 “a0 = a[i+3]” 、 将命令语句 ST63 的表述替换为 “a1 = a[i+4]” 。
     此 外, 通 过 对 于 该 替 换 后 的 命 令 语 句 ST62 及 ST63、 和 命 令 语 句 ST64 进 行 复 制 传 播, 将 图 20(b) 所 示 的 迭 代 i+3 的 命 令 语 句 ST71 的 表 述 替 换 为 “b[i+3] = a[i+3]+a[i+4]+a[i+5]” 、 将命令语句 ST72 的表述替换为 “a0 = a[i+4]” 、 将命令语句 ST73 的表述替换为 “a1 = a[i+5]” ( 参照图 20(c))。
     (5) 也可以将用来使处理器执行在实施方式中说明的程序生成处理 ( 参照图 5 ~ 图 7) 的程序记录到记录介质中、 或经由各种通信路径等流通而发布。在这样的记录介质 中, 有 IC 卡、 光盘、 软盘、 ROM、 闪存存储器等。被流通、 发布的程序通过保存在能够由设备的 处理器读取的存储器等中而供使用, 通过该处理器执行该程序而实现在实施方式中表示的
     程序生成装置的各功能。
     (6) 也可以在有关实施方式的程序生成装置 100 中组合使用上述 (1) ~ (5) 的一 部分或全部的变形。
     (7) 以下, 还对本发明的有关一实施方式的程序生成装置的结构及其变形例和各 效果进行说明。
     (a) 有关本发明的一实施方式的程序生成装置, 通过参照对象源程序而生成新的 程序, 该对象源程序包含将由 1 个以上的命令语句构成的块重复处理 N 次的循环处理, 该循 环处理的在有关第 i 次执行的上述块内的命令语句中定义的变量处于被有关第 j 次执行的 上述块内的命令语句所参照的相关关系, 其中 N ≥ 2, 1 ≤ i < N, i < j ≤ N, 其特征在于, 该 程序生成装置具备 : 计算单元, 以有关第 i 次执行的上述块、 和有关第 i 次以外的执行的 1 个以上的上述块为对象块, 进行计算该对象块中的变量表述的等价关系的计算处理 ; 确定 单元, 基于上述计算单元计算出的变量表述的等价关系, 对于上述变量之中的、 处于上述相 关关系的全部的对象变量的表述, 进行确定与该对象变量的表述等价的不具有上述相关关 系的其他变量的表述的确定处理 ; 以及生成单元, 生成用来进行上述循环处理的 M 次的处 理的、 包含如下命令语句的程序, 该命令语句包含有上述确定单元确定的其他变量的表述, 其中 M ≤ N。
     根据上述结构的有关本发明的一实施方式的程序生成装置, 通过参照包含在有关 第 i 次执行的块内的命令语句与有关第 j 次执行的块内的命令语句之间有所谓的真相关的 关系的循环处理的对象源程序, 能够生成用来进行该循环处理的 M 次的处理的程序, 该程 序包含如下命令语句, 该命令语句对于处于真相关的关系的全部的对象变量的表述, 包含 有与该对象变量的表述等价的没有真相关的关系的其他变量的表述。
     根据该生成的程序, 能够将循环处理的 M 次的处理通过多个处理器独立地并行执 行、 将循环处理高速地执行。
     因而, 该程序生成装置对于用来通过参照包含具有真相关的关系的循环处理的源 程序, 从而使用多个处理器高速地执行循环处理的程序的生成是有用的。
     (b) 此外, 也可以是, 上述确定单元确定的与上述对象变量的表述等价的不具有上 述相关关系的其他变量的表述, 是与哪个对象变量的表述都不同的变量的表述。
     根据该程序生成装置, 通过参照包含具有真相关的关系的循环处理的对象源程 序, 能够生成用来进行该循环处理的 M 次的处理的程序, 该程序包含如下命令语句, 该命令 语句包含有与处于真相关的关系的全部的对象变量的表述等价的不具有真相关的关系的 其他变量的表述。
     即, 该程序生成装置通过参照包含具有真相关的关系的循环处理的对象源程序, 能够生成通过将循环处理的 M 次的处理由多个处理器独立地并行执行而能够高速地执行 的程序。
     (c) 此外, 也可以是, 上述计算单元将有关第 i 次执行的上述块、 和有关第 i+1 次 执行的上述块作为上述对象块, 进行上述计算处理 ; 每当上述计算单元进行上述计算处理 时, 上述确定单元基于已计算的各变量表述的等价关系, 对于全部的对象变量的表述, 进行 是否能够确定如下表述的判断, 该表述是与该对象变量的表述等价的不具有上述相关关系 的其他变量的表述、 而且是与哪个对象变量的表述都不同的变量的表述 ; 在该判断处理的结果是否定的期间, 一边使 i 每次增加 1, 一边使上述计算单元重复进行上述计算处理。
     根据该程序生成装置, 在 i 是 n(n < N) 的情况下, 在不能对于处于真相关的关系 的全部的对象变量的表述确定与该对象变量的表述等价的没有真相关的关系的其他变量 的表述的情况下, 能够生成用来进行至少从 n 到 N 的 N-N 次的循环处理的程序, 该程序包括 包含有与处于真相关的关系的全部的对象变量的表述等价的没有真相关的关系的包含其 他变量的表述的命令语句。
     因而, 通过至少将该 N-n 次的循环处理用多个处理器独立地并行执行, 能够高速 地执行。
     (d) 此外, 也可以是, 上述程序生成装置参照的程序是用来由单一的处理器执行的 程序 ; 上述生成单元生成的程序是用来由多个处理器并行执行的程序。
     根据该程序生成装置, 通过参照用来由单一的处理器执行的程序, 能够生成用来 由多个处理器并行执行的程序。 因而, 在例如已经有编程者制作的、 用来由单一的处理器执 行的程序的情况下, 也可以不特意制作用来由多个处理器并行执行的程序。 由此, 能够节省 用于制作程序的工作量。
     (e) 此外, 也可以是, 在 M < N 的情况下, 上述生成单元将所生成的程序变更以使得 其还进行上述循环处理的 N-M 次的处理, 并判断变更后的程序的处理和上述对象源程序的 处理是否为等价, 在为等价的情况下, 将上述生成的程序替换为该变更后的程序。
     根据该程序生成装置, 即使将暂且生成的、 用来进行循环处理的 M(M < N) 次的处 理的程序变更为进行循环处理的 N 次的处理的程序, 也以该处理与对象源程序的处理等价 为条件, 最终生成用来进行循环处理的 N 次的处理的程序。
     用来进行该循环处理的 N 次的处理的程序是包括如下命令语句的程序, 该命令语 句对于处于真相关的关系的全部的对象变量的表述, 包含有与该对象变量的表述等价的没 有真相关的关系的包含其他变量的表述的。因而, 能够将 N 次的循环处理通过用多个处理 器独立地并行执行而高速地执行。
     产业上的可利用性
     有关本发明的程序生成装置用于参照包含具有所谓的真相关的关系的循环处理 的源程序, 生成用来将由该循环处理实现的规定处理用多个处理器分担而并行执行的新的 程序。
     标号说明
     10 存储装置
     11 源程序
     12 汇编程序
     13 浮动二进制程序
     14 目标程序
     100 程序生成装置
     110 存储部
     120 取得部
     130 计算部
     131 迭代展开部132 名相关删除部 133 等价关系计算部 140 确定部 150 生成部 210 汇编器 220 链接器 1000 编译器系统

程序生成装置、程序生产方法及程序.pdf_第1页
第1页 / 共42页
程序生成装置、程序生产方法及程序.pdf_第2页
第2页 / 共42页
程序生成装置、程序生产方法及程序.pdf_第3页
第3页 / 共42页
点击查看更多>>
资源描述

《程序生成装置、程序生产方法及程序.pdf》由会员分享,可在线阅读,更多相关《程序生成装置、程序生产方法及程序.pdf(42页珍藏版)》请在专利查询网上搜索。

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