专利名称::程序生成装置、程序生产方法及程序的制作方法
技术领域:
:本发明涉及参照包含循环处理的源程序来生成新的程序的技术。
背景技术:
:已知有参照包含循环处理的源程序、生成用来使由该循环处理实现的规定处理由多个处理器分担执行的新的程序的编译器等(例如,专利文献1)。这里,所谓循环处理,是将由1个以上的命令语句构成的块反复处理N(N^2)次。根据专利文献1的技术,例如可以生成将N次的循环处理分割为各N/2次处理的两个部分循环处理,由两个处理器独立地并行执行而构成的新的程序。因而,根据专利文献1的技术,能够将N次的循环处理高速地执行。现有技术文献专利文献专利文献1日本特许第3028821号专利文献2日本特许第3234552号非专利文献非专禾丨J文献1:HansZima等“SupercompiIersforParallelandVectorComputers,,,AddisonWesleyPublishingCompanyInc.,1991,(日文翻译)村岡洋一:“%—,、一二y^49”,才一厶社,1995发明概要发明要解决的技术问题但是,在包含在源程序中的循环处理中,在具有在有关第j(i<j^N)次的执行的块内的命令语句中参照由有关第i(l^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是表示包含循环处理Rl的部分程序Pl及包含循环处理R4的部分程序P4的图。图3是用来说明数据的相关关系的图。图4是用来说明循环处理Rl中的数据的相关关系的图。图5是表示由程序生成装置100进行的程序生成处理的流程图,后接图6。图6是表示由程序生成装置100进行的程序生成处理的流程图,前接图5,后接图7。图7是表示由程序生成装置100进行的程序生成处理的流程图,前接图6。图8是表示循环处理Rl中的迭代i及迭代i+Ι的图。图9是表示将名相关删除后的迭代i及迭代i+Ι的图。图10是表示计算关于将名相关删除后的迭代i及迭代i+Ι的各命令语句的变量表述的等价关系的结果的图。图11是表示将名相关删除后的迭代i+2以及计算关于将名相关删除后的迭代i+2的各命令语句的变量表述的等价关系的结果的图。图12是表示将名相关删除后的迭代i+3以及计算关于将名相关删除后的迭代i+3的各命令语句的变量表述的等价关系的结果的图。图13是表示将全部的真相关删除后的迭代i+3及迭代变形候选的图。图14是表示循环处理Rl中的迭代02以及将名相关删除后的迭代02的图。图15是表示计算关于将名相关删除后的迭代0及1的各命令语句的变量表述的等价关系的结果的图。图16是表示计算关于将名相关删除后的迭代2的各命令语句的变量表述的等价关系的结果的图。图17是表示将真相关删除后的迭代02及部分程序P2的图。图18是表示部分程序P3的图。图19是表示循环处理R5R8的图。图20是用来说明进行变量表述的等价关系的计算的其他方法的例子的图。具体实施例方式以下,参照附图对本发明的实施方式进行说明。《实施方式》<概要>图2是表示在处理完成时、对于数组(array)b[k](0彡k彡99)能够得到相同的处理结果的等价的部分程序Pl和P4的图。有关实施方式的程序生成装置是将以往的编译器改良的结构,是通过参照包含图2(a)所示的部分程序Pl的源程序,生成与以往的编译器通过参照由编程者预先生成的包含图2(b)所示的部分程序P4的源程序而生成得到的汇编程序同样的汇编程序的装置。这里,部分程序Pl是包含具有真相关(truedependence)的关系的循环处理Rl的程序。关于真相关的关系,在后面详细说明,是指由在循环控制变量k是i(0^i<99)的情况下执行的块(block)Bl内的命令语句而定义的变量、由在循环控制变量k是i+1的情况下执行的块Bl内的命令语句来参照那样的关系。具有真相关的关系的命令语句间的执行顺序如果与本来的执行顺序逆转,则不能得到正确的结果,所以该循环处理Rl—般一边使循环控制变量k每次增加1一边依次执行。另一方面,包含在部分程序P4中的循环处理R4是不具有上述那样的真相关的关系的处理。因而,能够使用多个处理器执行。例如,可以将循环处理R4分为循环控制变量k从0到49的部分循环处理、和循环控制变量k从50到99的部分循环处理、使两个处理器独立地并行执行。由此,与用1个处理器依次执行关于循环控制变量k从0到99的循环处理Rl的情况相比,能够更高速地执行循环处理。如上所述,有关实施方式的程序生成装置通过参照包含图2(a)所示的部分程序Pl的源程序,能够生成与以往的编译器通过参照包含图2(b)所示的部分程序P4的源程序生成而得到的汇编程序同样的汇编程序。因而,在在如部分程序Pl那样、已经生成了包含具有真相关的关系的循环处理的源程序的情况下,能够不重新生成如部分程序P4那样、包含不具有真相关的关系的循环处理的源程序而生成适合于并行执行的汇编程序,在这一点上,有关实施方式的程序生成装置是有效的。另外,部分程序Pl虽然如上述那样包含具有真相关的关系的循环处理R1,但因为以下说明的理由,可以说是与部分程序P4相比更适合于单一的处理器中的高速执行的程序。这里,一般已知通过将程序内的变量尽量分配给寄存器、能够将程序更高速地执行。这是因为,与存储器相比,向寄存器的访问能够极高速地进行。在一般的编译器中,对于包含在部分程序Pl中的a0、al、a2那样的简单变量分配特定的寄存器的可能性较高。因而,在执行部分程序Pl的情况下,与执行部分程序P4的情况相比,能够减少向存储器的访问次数。即,在使用单一的处理器的情况下,部分程序Pl能够比部分程序P4更高速地执行。〈数据的相关关系〉使用图3对于以上述真相关为代表的数据的相关关系进行说明。图3是用来说明数据的相关关系的图。如该图所示,由命令语句ST100定义的变量a处于被在该命令语句ST100后执行的命令语句ST200所参照的关系。在处于这样的关系的情况下,是指具有从命令语句ST100向命令语句ST200的“真相关”。此外,如该图所示,被命令语句ST200所参照的变量a,处于在该命令语句ST200后执行的命令语句ST300中被定义的关系。在处于这样的关系的情况下,是指具有从命令语句ST200向命令语句ST300的“逆相关”(anti-d印endence)。此外,如该图所示,由命令语句ST100定义的变量a,处于在命令语句ST300中被再定义的关系。在处于这样的关系的情况下,是指有从命令语句ST100向命令语句ST300的“输出相关,,(outputdependence)。此外,以下,将作为真相关、逆相关及输出相关的发生原因的变量称作“作为相关的原因的变量”。在图3中,变量a是“作为相关的原因的变量”。另外,关于“逆相关”和“输出相关”,已知在处于相关关系的各命令语句中,通过将作为相关的原因的变量的表述替换为相互不同的表述,能够将该相关删除(例如,参照非专利文献1的120页)。因此,有时将“逆相关”及“输出相关”称作“名相关”。以上述部分程序Pl中的循环处理Rl为例,具体地说明数据的相关关系。图4是用来说明图2(a)所示的循环处理Rl中的数据的相关关系的图。以下,将在循环控制变量是m(m是循环控制变量能够取的任意的值)的情况下执行的循环内的块称作“迭代m”,将生成迭代m称作“关于m的迭代展开”,将该m称作“迭代号码,,。图4(a)表示在图2(a)所示的循环处理Rl中的循环控制变量k是0的情况下执行的块Bl、即迭代0,图4(b)表示迭代1。这里,由图4(a)所示的迭代0的命令语句ST12、ST13、ST14分别定义的变量aO、al、a2处于由图4(b)所示的迭代1的命令语句ST21参照的关系。此外,由图4(a)所示的迭代0的命令语句ST13、ST14分别定义的变量al、a2处于由图4(b)所示的迭代1的命令语句ST22、ST23参照的关系。S卩,存在以变量aO为相关的原因的、从命令语句ST12向ST21的真相关。此外,存在以变量al为相关的原因的、从命令语句ST13向ST21的真相关以及从命令语句ST13向ST22的真相关。此外,存在以变量a2为相关的原因的、从命令语句ST14向ST21的真相关以及从命令语句ST14向ST23的真相关。此外,由图4(a)所示的迭代0的命令语句ST12定义的变量aO处于由图4(b)所示的迭代1的命令语句ST22再定义的关系。S卩,存在以变量aO为相关的原因的、从命令语句ST12向ST22的输出相关。同样,存在以变量al为相关的原因的、从命令语句ST13向ST23的输出相关,存在以变量a2为相关的原因的、从命令语句ST14向ST24的输出相关。此外,由图4(b)所示的迭代1的命令语句ST21参照的变量a0、al、a2处于由命令语句ST22ST24分别定义的关系。即,存在以变量a0为相关的原因的、从命令语句ST217向ST22的逆相关,存在以变量al为相关的原因的、从命令语句ST21向ST23的逆相关,存在以变量a2为相关的原因的、从命令语句ST21向ST24的逆相关。此外,在迭代0中也同样,存在以变量aO、变量al、变量a2为相关的原因的逆相关。另外,以下,将循环处理中的、存在从某个迭代内的命令语句向其他迭代内的命令语句的相关的情况也称作“在迭代间有相关关系”。〈结构〉图1是表示包括有关实施方式的程序生成装置100的编译器系统1000的结构的块图。编译器系统1000是通过参照包含如上述部分程序Pl那样、在迭代间有真相关的关系的循环处理的源程序11,从而生成能够实现由多个处理器进行的循环处理的并行执行的目标程序14的系统。编译器系统1000由包括处理器(未图示)、存储器(未图示)、和硬盘等的存储装置10的计算机(例如,PC(PersonalComputer个人电脑))实现。编译器系统1000如该图所示,包括存储装置10、程序生成装置100、汇编器210、和链接器(linker)220而构成。另外,程序生成装置100、汇编器210及链接器220的各功能通过上述处理器将存储在存储装置10中的未图示的程序读入到上述存储器中、执行所读入的程序来实现。这里,程序生成装置100是将以往的编译器改良的结构,具有参照存储在存储装置10中的、用C语言或C++语言等的高级语言记述的源程序11而生成汇编程序12的功能。程序生成装置100将所生成的汇编程序12向存储装置10保存。S卩,程序生成装置100通过参照包含在迭代间有真相关的关系的循环处理的源程序11,生成用来执行消除了该真相关的关系的循环处理的汇编程序12。此外,汇编器210具有参照由程序生成装置100向存储装置10保存的汇编程序12、生成由机器语言记述的浮动的二进制程序(relocatablebinaryprogram)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的处理结果保存的存储器区域。S卩,以下虽然没有特别明述,但假设计算部130、确定部140及生成部150间的处理结果的交换是经由存储部110进行的。此外,取得部120具有从存储装置10读出源程序11、保存到存储部110中的功能。计算部130具有计算关于在由取得部120保存到存储部110中的源程序11中包含的循环处理中的、某个迭代及其他1个以上的迭代的变量表述的等价关系的功能。计算部130包括迭代展开部131、名相关删除部132、和等价关系计算部133。这里,迭代展开部131具有基于包含在源程序11中的循环处理进行迭代展开(expandingiteration)的功會旨。名相关删除部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+Ι的迭代展开(图5的步骤Si)。计算部130的名相关删除部132确定迭代i及迭代i+Ι的各命令语句间的相关关系(步骤S2)。此外,名相关删除部132通过将作为名相关(即,输出相关和逆相关)的原因的变量的表述变更,将名相关删除(步骤S3)。计算部130的等价关系计算部133计算关于删除了名相关的迭代i及迭代i+Ι的各命令语句的变量表述的等价关系(步骤S4)。该变量表述的等价关系的计算方法如上所述,是与在专利文献2中说明的方法同样的方法,所以以下简单地说明,但作为结果能够得到图10所示那样的等价式集合。这里,将图10(a)及图10(b)所示的用“{”和“}”括起的部分称作“等价式集合”、将在等价式集合中记载的用“(”和“),,括起的部分称作“等价式”。此外,在等价式中记载的用“,,,分隔的各要素表示是等价的。首先,等价关系计算部133将迭代i及迭代i+Ι的各命令语句1个1个依次作为处理对象而进行以下的处理。S卩,等价关系计算部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与步骤Sl的处理同样,进行关于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及SlO中确定的作为相关的原因的变量及在步骤S3和Sll中为了将名相关删除而导入的变量的表述用于置换。在判断为不能将全部的真相关的情况下(步骤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_l的值,对计算部130指示处理。被指示了处理的计算部130的迭代展开部131与步骤Sl的处理同样,进行对从kmin到m_l各自的迭代展开(图7的步骤S16)。此外,名相关删除部132对于从迭代kmin到迭代m_l的每个迭代,分别与步骤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-Ι的范围中的删除了真相关的循环处理、与能够应用到循环控制变量为从m到kmax的范围中的删除了真相关的循环处理集中为1个循环处理。另一方面,在确定部140判断为与迭代变形候选中的迭代kmin到迭代m_l相同形式的情况下(步骤S21是),生成部150如以下这样生成汇编程序12(步骤S22)。即,生成部150在对将源程序11的循环处理内的块替换为迭代变形候选的程序进行优化和并行化(parallelizing)后,生成汇编程序12。另外,优化和并行化可以通过以往以来进行的方法实现,所以这里省略详细的说明,关于进行了优化和并行化后的程序的具体例在后面叙述(参照图18)。生成部150将所生成的汇编程序12保存到存储装置10中,程序生成装置100结束程序生成处理。〈具体例〉以下,以设源程序11包含图2(a)所示的部分程序Pl的情况为例,按照图5图7所示的流程图说明程序生成装置100的动作。程序生成装置100的取得部120从存储装置10读出源程序11,保存到存储部110中。计算部130的迭代展开部131进行关于表示包含在源程序11中的循环处理(在该例中是Rl)中的循环控制变量(在该例中是k)的任意的值的i和i+Ι的迭代展开(图5的步骤Si)。图8(a)是表示图2(a)所示的循环处理Rl中的迭代i的图,图8(b)是表示迭代i+Ι的图。计算部130的名相关删除部132确定迭代i及迭代i+Ι的各命令语句间的相关关系(步骤S2)。此外,名相关删除部132通过变更作为名相关(即,输出相关和逆相关)的原因的变量的表述,将名相关删除(步骤S3)。在图8(a)及图8(b)所示的例子中,以变量aO为相关的原因,存在从命令语句ST42向命令语句ST51的真相关、从命令语句ST42向命令语句ST52的输出相关、从命令语句ST41向命令语句ST42的逆相关、和从命令语句ST51向ST52的逆相关。此外,以变量al为相关的原因,存在从命令语句ST43向命令语句ST51的真相关、从命令语句ST43向命令语句ST53的输出相关、从命令语句ST41向命令语句ST43的逆相关、和从命令语句ST51向ST53的逆相关。此外,以变量a2为相关的原因,存在从命令语句ST44向命令语句ST51的真相关、从命令语句ST44向命令语句ST54的输出相关、从命令语句ST41向命令语句ST44的逆相关、和从命令语句ST51向ST54的逆相关。通过将命令语句ST42中的变量aO的表述变更为“aO_i”、将命令语句ST52中的变量aO的表述变更为“aO_il”,能够将以变量aO为相关的原因的名相关删除。此外,与变量aO的情况同样,通过将命令语句ST43中的变量al的表述变更为“al_i”、将命令语句ST53中的变量al的表述变更为“al_il”,能够将以变量al为相关的原因的名相关删除。此外,通过将命令语句ST44中的变量a2的表述变更为“a2_i”、将命令语句ST54中的变量a2的表述变更为“a2_il”,能够将以变量a2为相关的原因的名相关删除。图9(a)是表示从图8(a)所示的迭代i中删除了名相关的迭代i的图,图9(b)是表示从图8(b)所示的迭代i+Ι删除了名相关的迭代i+Ι的图。另外,在步骤S3的处理中,由于仅将名相关删除,所以真相关继续存在。即,在图9(a)及图9(b)所示的例子中,存在从命令语句ST46、ST47、ST48向命令语句ST55的以变量aO_i、al_i、a2_i为相关的原因的真相关、和从命令语句ST47、ST48向命令语句ST56、ST57的以变量al_i、a2_i为相关的原因的真相关。计算部130的等价关系计算部133计算关于将名相关删除后的迭代i及迭代i+1的各命令语句的变量表述的等价关系(步骤S4)。如果对图9(a)及图9(b)所示的将名相关删除后的迭代i及迭代i+Ι的各命令语句(ST45ST48、ST55ST58)计算变量表述的等价关系,则为以下这样。另外,假设在以下的说明开始时点,在等价式集合中哪个等价式都不包括。首先,在以图9(a)所示的命令语句ST45为处理对象的情况下,由于包括记述在命令语句ST45的右边及左边中的变量及式子的等价式不包含在等价式集合中,所以如图10(a)所示的等价式集合E45那样,将关于命令语句ST45的等价式追加到等价式集合中。即,等价式集合E45表示在刚刚执行命令语句ST45之后、变量“b[i]”和式“a0+al+a2”处于等价的关系。在以图9(3)所示的命令语句51465148及图9(13)的命令语句ST55为处理对象的情况下,也与命令语句ST45的情况同样地处理(参照图10(a)的等价式集合E46E48及图10(b)的等价式集合E55)。此外,在以图9(b)所示的命令语句ST56为处理对象的情况下,包含记述在命令语句ST56的右边的变量(在该例中是“al_i”)的等价式(在该例中是(al_i,a2))已经包含在等价式集合E55中。因而,在该等价式中,追加了记述在命令语句ST56的左边的变量(在该例中是“a0_il”)(参照图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、al_i、a2_i为相关的原因的真相关。根据图10(a)所示的等价式集合E48,作为真相关的原因的变量“a2_i”与变量“a[i+3]”是等价的。此外,该变量“a[i+3]”不是在步骤S2中确定的作为相关的原因的变量以及在步骤S3中为了将名相关删除而导入的变量。因而,能够将变量“a2_i”的表述替换为变量“a[i+3]”的表述。此外,根据等价式集合E48,作为真相关的原因的变量“a0_i”与变量“al”是等价的,作为真相关的原因的变量“al_i”与变量“a2”是等价的。但是,变量“al”及变量“a2”由于是在步骤S2中确定的作为相关的原因的变量,所以不能进行作为真相关的原因的变量“a0_i,,及变量“al_i,,的各表述的替换。因而,确定部140判断为不能将全部的真相关删除(步骤S5否)。确定部140将m的值设定为“2”(图6的步骤S7),在该例中,由于m的值比从kmax(在该例中是“99”)减去kmin(在该例中是“0”)后的值小(步骤S8是),所以通知m的值(在该例中是“2”),对计算部130指示处理。迭代展开部131与步骤Sl的处理同样,进行关于i+m(在该例中是“i+2”)的迭代展开(步骤S9)。此外,计算部130的名相关删除部132关于迭代i+m_l(在该例中是“i+1”)和迭代i+m,与步骤S3的处理同样,将名相关删除(步骤Sll)。此外,计算部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_il+al_il+a2_il)”追加到图10(b)所示的等价式集合E58中的结果。确定部140与步骤S5的处理同样,基于在步骤S12中等价关系计算部133计算出的变量表述的等价关系,判断是否能够将全部的真相关删除(步骤S13)。在图9(b)及图11(a)所示的例子中,存在以变量a0_i1、al_i1、a2_i1为相关的原因的真相关。根据图10(b)所示的等价式集合E58,作为真相关的原因的变量“a2_il”与变量“a[i+4]”是等价的,作为真相关的原因的变量“al_il”与变量“a[i+3]”是等价的。此外,变量“a[i+4],,及变量“a[i+3],,不是在步骤S2及SlO中确定的作为相关的原因的变量以及在步骤S3及S7中为了将名相关删除而导入的变量。因而,能够将变量“a2_il”的表述替换为变量“a[i+4]”的表述、将变量“al_il”的表述替换为变量“a[i+3],,的表述。此外,根据等价式集合E58,作为真相关的原因的变量“a0_il”与变量“al_i”及变量“a2”是等价的。但是,变量“al_i”是在步骤S3中为了将名相关删除而使用的变量,变量“a2”是在步骤S2中确定的作为相关的原因的变量。因而,不能进行作为真相关的原因的变量“a0_il”的表述的替换。由此,确定部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」2、al」2、a2」2为相关的原因的真相关。根据图11(b)所示的等价式集合E68,作为真相关的原因的变量“a2_i2”与变量“a[i+5]”是等价的,作为真相关的原因的变量“al_i2”与变量“a[i+4]”是等价的,作为真相关的原因的变量“a0_i2”与变量“a[i+3]”是等价的。此外,变量“a[i+5]”、变量“a[i+4],,及变量“a[i+3],,不是在步骤S2及SlO中确定的作为相关的原因的变量以及在步骤S3及S7中为了将名相关删除而导入的变量。因而,能够将变量“a2_i2”的表述替换为变量“a[i+5]”的表述、将变量“al_i2”的表述替换为变量“a[i+4],,的表述、将变量“a0_i2”的表述替换为变量“a[i+3],,的表述。由此,确定部140判断为能将全部的真相关删除(步骤S13是),生成部150基于14不能删除全部的真相关的迭代i+m(在该例中是“i+3”)生成迭代变形候选(步骤S15)。图13(a)是表示将全部的真相关删除后的迭代i+3的图。在图13(a)所示的例子中,生成部150将“i+3”设置为k,生成将变量“a0_i3”的表述替换为变量“a0_k”的表述、将变量“al_i3”的表述替换为变量“al_k”的表述、将变量“a2_i3”的表述替换为变量“a2_k”的表述的迭代变形候选。图13(b)是表示生成部150生成的迭代变形候选的图。该迭代变形候选能够应用到k为kmin+m(在该例中是“3”)到kmax(在该例中是“99”)的迭代中。即,至少在3<k<kmax的范围中,能够将图2(a)所示的循环处理Rl的块Bl替换为在迭代间没有相关的等价的块。接着,确定部140通知kmin(在该例中是“0”)及m_l(在该例中是“2”)的值,对计算部130指示处理。被指示了处理的计算部130的迭代展开部131与步骤Sl的处理同样,进行关于从kmin到m-1的各自的迭代展开(图7的步骤S16)。此外,名相关删除部132关于从迭代kmin到迭代m_l,与步骤S2同样,确定各命令语句间的相关关系(图7的步骤S17),与步骤S3的处理同样,将名相关删除(步骤S18)。图14(a)所示的迭代Il13表示图2(a)所示的循环处理Rl中的迭代02。此外,图14(b)所示的迭代IlO130表示从图14(a)所示的迭代02中将名相关删除后的迭代02的。此外,图14(b)所示的命令语句STlST3是处于图2(a)所示的循环处理Rl的之前的紧挨着的(immediatelybefore)命令语句STlST3。等价关系计算部133与步骤S4的处理同样,计算关于将名相关删除后的迭代kmin到迭代m-1的各自的各命令语句的变量表述的等价关系(步骤S19)。图15是表示计算关于图14(b)所示的命令语句STlST3及将名相关删除后的迭代01的各命令语句的变量表述的等价关系的结果的图。此外,图16是表示计算关于图14(b)所示的将名相关删除后的迭代2的各命令语句的变量表述的等价关系的结果的图。接着,确定部140与步骤S5的处理同样,基于在步骤S19中等价关系计算部133计算出的变量表述的等价关系,判断是否能够将全部的真相关删除(步骤S20)。根据图15所示的等价式集合E3,作为真相关的原因的变量“aO”与变量“aW]”是等价的,作为真相关的原因的变量“al”与变量“a[l]”是等价的,作为真相关的原因的变量“a2”与变量“a[2]”是等价的。此夕卜,变量“a”、变量“a“1””及变量“a[2]”不是在步骤S17中确定的作为相关的原因的变量以及在步骤S18中为了将名相关删除而导入的变量。因而,能够将图14(b)所示的命令语句ST15的变量“aO”的表述替换为变量"a,,的表述、将变量“al”的表述替换为变量“a[l],,的表述、将变量“a2”的表述替换为变量“a[2]”的表述。同样,能够基于图15所示的等价式集合E15、将图14(b)所示的命令语句ST16的变量“al”的表述替换为变量“a[l]”的表述。此外,能够基于图15所示的等价式集合E16、将图14(b)所示的命令语句ST17的变量“a2”的表述替换为变量“a[2],,的表述。同样,能够基于图15所示的等价式集合E18E26、将图14(b)所示的命令语句ST25ST27的变量“a0_0”、变量“al_0”及变量“a2_0”的表述替换。此外,能够基于图15所示的等价式集合E28及图16所示的等价式集合E35、E36、将命令语句ST35ST37的变量“a0_l”、变量“al_l”及变量“a2_l”的表述替换。因而,确定部140判断为能够将全部的真相关删除(步骤S20是),判断将全部的真相关删除后的迭代kmin(在该例中是“0”)到迭代m-1(在该例中是“2”)是否是与在步骤S15中生成的迭代变形候选中的迭代kmin到迭代m_l相同形式(步骤S21)。图17(a)所示的迭代I11、I21、I31表示从图14(b)所示的将名相关删除后的迭代02(110、120、130)中将真相关删除后的迭代。图13(b)所示的关于迭代变形候选的迭代0、迭代1、迭代3与图17(a)所示的迭代111、121、131—致。因而,在该例中,确定部140判断为相同形式(步骤S21是),生成部150将源程序11的循环处理Rl的块Bl替换为迭代变形候选而生成基于优化和并行化的程序的汇编程序12(步骤S22)。图17(b)表示将图2(a)所示的部分程序Pl的块Bl替换为图13(b)所示的迭代变形候选的部分程序P2。在该部分程序P2中,由命令语句STlST3定义的变量“aO”、变量“al”及变量“a2”、由命令语句ST92ST94定义的变量“aO_k”、变量“al_k”及变量“a2_k”没有由部分程序P2内的命令语句参照。因而,在源程序11中的部分程序P2以外的部分中,也能够以不参照这些变量为条件、生成将命令语句STlST3、说明(declare)变量“aO”、变量“al”及变量“a2”的命令语句ST4、和命令语句ST92ST94删除的优化的部分程序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”中的、在χ中保存有与y相同的值的关系、即χ与y为等价的关系,通过反复进行替换命令语句的表述(以下称作“复制传播”(copypropagation))的方法来计算。以下,简单地说明该方法。例如,通过对图8(a)所示的迭代i的命令语句ST44“a2=a[i+3]”进行复制传播,由此,将图8(b)所示的迭代i+Ι的命令语句ST51的表述替换为“b[i+1]=a0+al+a[i+3],,、将命令语句ST53的表述替换为“al=a[i+3]”。此外,通过对该替换后的命令语句ST53和命令语句ST54进行复制传播,将图20(a)所示的迭代i+2的命令语句ST61的表述替换为“b[i+2]=a0+a[i+3]+a[i+4]此夕卜,将命令语句ST62的表述替换为“aO=a[i+3]”、将命令语句ST63的表述替换为“al=a[i+4]”。此外,通过对于该替换后的命令语句ST62及ST63、和命令语句ST64进行复制传播,将图20(b)所示的迭代i+3的命令语句ST71的表述替换为“b[i+3]=a[i+3]+a[i+4]+a[i+5]”、将命令语句ST72的表述替换为“aO=a[i+4]”、将命令语句ST73的表述替换为“al=a[i+5],,(参照图20(c))。(5)也可以将用来使处理器执行在实施方式中说明的程序生成处理(参照图5图7)的程序记录到记录介质中、或经由各种通信路径等流通而发布。在这样的记录介质中,有IC卡、光盘、软盘、ROM、闪存存储器等。被流通、发布的程序通过保存在能够由设备的处理器读取的存储器等中而供使用,通过该处理器执行该程序而实现在实施方式中表示的程序生成装置的各功能。(6)也可以在有关实施方式的程序生成装置100中组合使用上述⑴(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次的处理的程序,该程序包含如下命令语句,该命令语句包含有与处于真相关的关系的全部的对象变量的表述等价的不具有真相关的关系的其他变量的表述。S卩,该程序生成装置通过参照包含具有真相关的关系的循环处理的对象源程序,能够生成通过将循环处理的M次的处理由多个处理器独立地并行执行而能够高速地执行的程序。(c)此外,也可以是,上述计算单元将有关第i次执行的上述块、和有关第i+Ι次执行的上述块作为上述对象块,进行上述计算处理;每当上述计算单元进行上述计算处理时,上述确定单元基于已计算的各变量表述的等价关系,对于全部的对象变量的表述,进行是否能够确定如下表述的判断,该表述是与该对象变量的表述等价的不具有上述相关关系的其他变量的表述、而且是与哪个对象变量的表述都不同的变量的表述;在该判断处理的结果是否定的期间,一边使i每次增加1,一边使上述计算单元重复进行上述计算处理。根据该程序生成装置,在i是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迭代展开部19132名相关删除部133等价关系计算部140确定部150生成部210汇编器220链接器1000编译器系统权利要求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+Ι次执行的上述块作为上述对象块,进行上述计算处理;每当上述计算单元进行上述计算处理时,上述确定单元基于已计算的各变量表述的等价关系,对于全部的对象变量的表述,进行是否能够确定如下表述的判断,该表述是与该对象变量的表述等价的不具有上述相关关系的其他变量的表述、而且是与哪个对象变量的表述都不同的变量的表述;在该判断处理的结果是否定的期间,一边使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个以上的上述块为对象块,进行计算该对象块中的变量表述的等价关系的计算处理;确定步骤,基于上述计算步骤计算出的变量表述的等价关系,对于上述变量之中的、处于上述相关关系的全部的对象变量的表述,进行确定与该对象变量的表述等价的不具有上述相关关系的其他变量的表述的确定处理;以及生成步骤,生成用来进行上述循环处理的M次的处理的、包含如下命令语句的程序,该命令语句包含有上述确定步骤确定的其他变量的表述,其中M<N。7.一种程序,用来使程序生成装置中的处理器进行程序生成处理,该程序生成装置通过参照对象源程序而生成新的程序,该对象源程序包含将由1个以上的命令语句构成的块重复处理N次的循环处理,该循环处理的在有关第i次执行的上述块内的命令语句中定义的变量处于被有关第j次执行的上述块内的命令语句所参照的相关关系,其中N>2,1<i<N,i<j^N,其特征在于,上述程序生成处理包括计算步骤,以有关第i次执行的上述块、和有关第i次以外的执行的1个以上的上述块为对象块,进行计算该对象块中的变量表述的等价关系的计算处理;确定步骤,基于上述计算步骤计算出的变量表述的等价关系,对于上述变量之中的、处于上述相关关系的全部的对象变量的表述,进行确定与该对象变量的表述等价的不具有上述相关关系的其他变量的表述的确定处理;以及生成步骤,生成用来进行上述循环处理的M次的处理的、包含如下命令语句的程序,该命令语句包含有上述确定步骤确定的其他变量的表述,其中M<N。全文摘要程序生成装置参照包含将块重复处理N次的、有关第i次执行的上述块内定义的变量处于在有关第j次执行的上述块内被参照的相关关系的循环处理的源程序,计算有关第i次的执行的上述块及有关第i次以外的执行的1个以上的上述块中的变量表述的等价关系,对于处于上述相关关系的全部的对象变量的表述,确定与该对象变量的表述等价的不具有上述相关关系的其他变量的表述,生成用来进行上述循环处理的M次的处理的、包括包含有所确定的其他变量的表述的命令语句的程序,其中N≥2,1≤i<N,i<j≤N,M≤N。文档编号G06F9/45GK102483701SQ20118000369公开日2012年5月30日申请日期2011年7月4日优先权日2010年7月5日发明者井上昭彦,森下广之,田中旭申请人:松下电器产业株式会社