專利名稱::程序生成裝置、程序生產方法及程序的制作方法
技術領域:
:本發明涉及參照包含循環處理的源程序來生成新的程序的技術。
背景技術:
:已知有參照包含循環處理的源程序、生成用來使由該循環處理實現的規定處理由多個處理器分擔執行的新的程序的編譯器等(例如,專利文獻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日發明者井上昭彥,森下廣之,田中旭申請人:松下電器產業株式會社