JP6810380B2 - Source program conversion system, source program conversion method, and source program conversion program - Google Patents

Source program conversion system, source program conversion method, and source program conversion program Download PDF

Info

Publication number
JP6810380B2
JP6810380B2 JP2016198686A JP2016198686A JP6810380B2 JP 6810380 B2 JP6810380 B2 JP 6810380B2 JP 2016198686 A JP2016198686 A JP 2016198686A JP 2016198686 A JP2016198686 A JP 2016198686A JP 6810380 B2 JP6810380 B2 JP 6810380B2
Authority
JP
Japan
Prior art keywords
loop
expansion
program
source program
expanded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016198686A
Other languages
Japanese (ja)
Other versions
JP2018060432A (en
Inventor
善之 大野
善之 大野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2016198686A priority Critical patent/JP6810380B2/en
Publication of JP2018060432A publication Critical patent/JP2018060432A/en
Application granted granted Critical
Publication of JP6810380B2 publication Critical patent/JP6810380B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ソースプログラムを入力として、計算機向けに最適化された、別のソースプログラムを作成する装置、方法およびプログラムに関する。 The present invention relates to an apparatus, method and program for creating another source program optimized for a computer by using a source program as an input.

高級言語により作成されたプログラムに含まれるループを、ループアンローリングすることによって、計算機上での実行性能の向上を目的とした プログラムの最適化技術が知られている。高級言語プログラムに含まれるループは、言語毎に定まっており、例えばC言語やC++言語ではforループ、FORTRAN言語ではDOループである。 A program optimization technique is known for the purpose of improving execution performance on a computer by loop unrolling a loop included in a program created in a high-level language. The loop included in the high-level language program is determined for each language, for example, a for loop in C language or C ++ language, and a DO loop in FORTRAN language.

ループアンローリングは、同じ計算処理を何回も繰り返し実行する場合に、もともと ループ1回で処理していた計算のN倍の演算処理を、ループ1回で処理するようにループを展開する技術である。ループアンローリングには、ループ1回での処理量を増やすことにより、ループ内の命令のスケジューリングの幅が広がる効果があったり、また、ループの回数が減るため、ループを制御するオーバーヘッドが減る効果があったりする。 Loop unrolling is a technology that expands a loop so that when the same calculation process is repeatedly executed many times, N times the calculation process that was originally processed in one loop is processed in one loop. is there. Loop unrolling has the effect of widening the scheduling range of instructions in the loop by increasing the amount of processing in one loop, and also has the effect of reducing the overhead of controlling the loop because the number of loops is reduced. There is.

例えば、元のソースプログラムが以下のようであったとする。
______________________
for ( i = 0 ; i < n ; i++ ) {
a[i] = b[i] * c[i] ;
}
______________________
ここで、アスタリスク記号“ * ”は乗算を表わす。
このプログラムについて、ループアンローリングをした結果は、次のようになる。
______________________
for ( i = 0 ; i < n ; i+=2 ) {
a[i] = b[i] * c[i] ;
a[i+1] = b[i+1] * c[i+1] ;
}
______________________
このループアンローリングでは、配列bと配列c の乗算結果を配列aに代入する処理を、ループ内で2要素分処理することによって、ループ回数を半減させている。
For example, suppose the original source program looks like this:
____________________
for (i = 0; i <n; i ++) {
a [i] = b [i] * c [i];
}
____________________
Here, the asterisk symbol “*” represents multiplication.
The result of loop unrolling for this program is as follows.
____________________
for (i = 0; i <n; i + = 2) {
a [i] = b [i] * c [i];
a [i + 1] = b [i + 1] * c [i + 1];
}
____________________
In this loop unrolling, the number of loops is halved by substituting the multiplication result of the array b and the array c into the array a for two elements in the loop.

ある種のプログラムをループアンローリングした場合、却って実行速度が低下することがある。例えば、ベクトルプロセッサで実行させるソースプログラムをループアンローリングしたプログラムを ベクトルプロセッサ用のコンパイラでコンパイルした場合、メモリアクセスが1要素とびのメモリアクセス、いわゆるストライドアクセスになる可能性がある。 When loop unrolling a certain program, the execution speed may slow down. For example, when a program obtained by loop unrolling a source program executed by a vector processor is compiled by a compiler for a vector processor, the memory access may become a memory access with one element skipped, so-called stride access.

このベクトル計算機に対する一つの対策が特許文献1に記載されている。特許文献1には、高級言語で書かれたソースプログラムについてベクトル化を行い、条件が満たされた場合に、ベクトル演算命令を含む命令列について多重に展開するような、データ処理装置が記載されている。このデータ処理装置は、所定の条件により、ベクトル化されたベクトル演算命令を含む命令列に関する分割処理を行うか否かを判定し、条件が満たされた場合に、ベクトル演算命令を含む命令列について多重に展開する。 One measure against this vector computer is described in Patent Document 1. Patent Document 1 describes a data processing device that vectorizes a source program written in a high-level language and, when the conditions are satisfied, expands multiple instruction sequences including vector operation instructions. There is. This data processing device determines whether or not to perform division processing on an instruction sequence including a vectorized vector operation instruction according to a predetermined condition, and when the condition is satisfied, the instruction sequence including the vector operation instruction Expand multiple times.

また、特許文献2から4にも関連する技術が開示されている。特許文献2から4には、ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係などを解析して、各ループを展開するか判定する手法が開示されている。 Further, patent documents 2 to 4 also disclose related techniques. Patent Documents 2 to 4 disclose a method for identifying each loop included in a source program, analyzing the data dependency related to expansion for each loop, and determining whether to expand each loop. There is.

特開平2−41562号公報Japanese Unexamined Patent Publication No. 2-4-1562 特開昭63−314675号公報Japanese Unexamined Patent Publication No. 63-314675 特開平4−307624号公報Japanese Unexamined Patent Publication No. 4-307624 特開平4−344535号公報Japanese Unexamined Patent Publication No. 4-344535

特許文献1のデータ処理装置では、ベクトル化により命令列を作成した後に、展開処理を行うため、メモリアクセスがストライドアクセスになるということがなくなる。このため、特許文献1のデータ処理装置は、ベクトル計算機において効率的なメモリアクセスをするベクトル命令列を作成できる。 In the data processing apparatus of Patent Document 1, since the expansion process is performed after the instruction sequence is created by vectorization, the memory access does not become the stride access. Therefore, the data processing device of Patent Document 1 can create a vector instruction sequence for efficient memory access in the vector computer.

しかしながら、特許文献1のデータ処理装置では、ベクトル化により命令列を作成した後に展開処理を行う。このため、高級言語で記述されたソースコードレベルのループアンロールを実現できない問題が残る。特許文献2にも同様の問題がある。したがって、ソースコードレベルにてアンロールできないため、アンロールに伴って出現する重複計算除去や、ソースコードコンパイル時の命令スケジューリングの効果を得難いという欠点を指摘できる。 However, in the data processing apparatus of Patent Document 1, the expansion process is performed after the instruction sequence is created by vectorization. For this reason, there remains a problem that loop unrolling at the source code level written in a high-level language cannot be realized. Patent Document 2 has a similar problem. Therefore, since it cannot be unrolled at the source code level, it can be pointed out that it is difficult to obtain the effects of duplicate calculation removal that appears with unrolling and instruction scheduling at the time of source code compilation.

特許文献3及び特許文献4に関しては、制約や目的、展開手法の違いから下で説明する発明ほどのベクトル計算機に適したループアンロール効果を得られない。 With respect to Patent Document 3 and Patent Document 4, it is not possible to obtain a loop unrolling effect suitable for a vector computer as in the invention described below due to differences in restrictions, purposes, and expansion methods.

本発明は、上記課題に鑑みて成されたものであり、ベクトル計算機に最適なループ展開を施したプログラムを作成できるソースプログラム変換システムの提供を目的とする。 The present invention has been made in view of the above problems, and an object of the present invention is to provide a source program conversion system capable of creating a program with optimal loop unrolling for a vector computer.

本発明の一実施形態に係るソースプログラム変換システムは、変換対象とするソースプログラムを受け付けるプログラム入力部と、前記プログラム入力部に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定部と、前記展開可否判定部が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定部と、前記展開パラメタ決定部が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成部と、を含み成る。 The source program conversion system according to the embodiment of the present invention identifies a program input unit that accepts a source program to be converted and each loop included in the source program input to the program input unit, and puts each loop into each loop. On the other hand, in the loop after expansion, the expansion possibility determination unit that analyzes the data dependency related to expansion and determines whether or not each loop can be expanded and the loop that the expansion possibility determination unit determines that expansion is possible. The number of loop unrolling stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated, and the number of loops of the loop before expansion are calculated in one rotation of the loop after expansion. A program having an expanded loop is generated and processed in response to the number of loop unrolling stages and the loop unrolling width determined by the expansion parameter determination unit that derives the loop unrolling width, which is a positive integer indicating the above. It includes a development program creation unit that outputs as a development program.

本発明の一実施形態に係る情報処理システムによるソースプログラム変換方法は、変換対象とするソースプログラムを受け付け、前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定し、展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数を導出処理すると共に、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理し、導出したループ展開段数とループ展開幅に基づいて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する。 The source program conversion method by the information processing system according to the embodiment of the present invention accepts the source program to be converted, identifies each loop included in the source program, and depends on the data related to the expansion for each loop. The relationship is analyzed to determine whether or not each loop can be expanded, and for the loop that is determined to be expandable, a positive integer indicating how many rotations of the loop before expansion is performed in the loop after expansion. In addition to deriving the number of loop unrolling stages, the loop unrolling width, which is a positive integer indicating how many rotations of the loop before expansion are calculated in one rotation of the loop after expansion, is derived and derived. Based on the number of loop unrolling stages and the loop unrolling width, a program having the expanded loop is generated and processed, and output as an expanded program.

本発明の一実施形態に係るソースプログラム変換プログラムは、情報処理リソースを、変換対象とするソースプログラムを受け付けるプログラム入力手段と、前記プログラム入力手段に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定手段と、前記展開可否判定手段が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定手段と、前記展開パラメタ決定手段が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成手段、として動作させる。 The source program conversion program according to the embodiment of the present invention identifies the information processing resource as a program input means for receiving the source program to be converted and each loop included in the source program input to the program input means. Then, after the expansion, the expansion possibility determination means for analyzing the data dependency related to the expansion for each loop and determining whether or not the expansion of each loop is possible and the loop determined by the expansion possibility determination means to be expandable are performed. In the loop of, the number of loop unrolling stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated, and the number of rotations of the loop before expansion are calculated for the loop after expansion. It has an expansion parameter determining means that derives and processes a loop unrolling width that is a positive integer indicating whether to calculate in one rotation, and an expanded loop that receives the number of loop expansion stages and the loop expansion width determined by the expansion parameter determining means. It operates as a decompression program creation means that generates a program and outputs it as a decompressed program.

本発明の一実施形態に係る記録媒体は、上記ソースプログラム変換プログラムをコンピュータ読取可能に非一時的に保持する。 The recording medium according to the embodiment of the present invention holds the source program conversion program in a computer-readable manner non-temporarily.

本発明によれば、ベクトル計算機に最適なループ展開を施したプログラムを作成できるソースプログラム変換システムを提供できる。 According to the present invention, it is possible to provide a source program conversion system capable of creating a program with optimal loop unrolling for a vector computer.

本発明の一実施形態のソースプログラム変換システムの構成を示すブロック図である。It is a block diagram which shows the structure of the source program conversion system of one Embodiment of this invention. 動作説明に用いるソースプログラムのプログラムリスト例を示した説明図である。It is explanatory drawing which showed the program list example of the source program used for operation explanation. 展開パラメタ決定部の動作を示すフローチャートである。It is a flowchart which shows the operation of the expansion parameter determination part. 展開プログラム作成部の動作を示すフローチャートである。It is a flowchart which shows the operation of the expansion program creation part. 一実施形態のソースプログラム変換システムにおいて作成された展開済みプログラムを示した図である。It is a figure which showed the expanded program created in the source program conversion system of one Embodiment. 一実施形態のソースプログラム変換システムにおいて作成された別の展開済みプログラムを示した図である。It is a figure which showed the other expanded program created in the source program transformation system of one embodiment. 展開パラメタ決定部の別の動作を示すフローチャートである。It is a flowchart which shows another operation of the expansion parameter determination part. 図7に示したフローチャートを用いて作成された展開済みプログラムを示した図である。It is a figure which showed the expanded program created by using the flowchart shown in FIG. 7. 図7に示したフローチャートを用いて作成された別の展開済みプログラムを示した図である。It is a figure which showed another expanded program created by using the flowchart shown in FIG. 7. 本発明の一実施形態のソースプログラム変換システムの構成例を示すブロック図である。It is a block diagram which shows the structural example of the source program conversion system of one Embodiment of this invention.

本発明の実施形態を図面に基づいて説明する。 Embodiments of the present invention will be described with reference to the drawings.

[第1の実施形態]
[構成の説明]
図1は、第1の実施形態に係るソースプログラム変換システムを示すブロック図である。ループ展開装置10は、記憶装置20に格納されたソースプログラム21に含まれたループ内のループアンロール可能なループに関してループアンロールを実施し、ループアンロールしたプログラムを展開済みプログラム22として記憶装置20に格納する装置である。記憶装置20は、ループ展開装置10に内蔵される場合もある。
[First Embodiment]
[Description of configuration]
FIG. 1 is a block diagram showing a source program conversion system according to the first embodiment. The loop unrolling device 10 performs loop unrolling on the loop unrollable loop in the loop included in the source program 21 stored in the storage device 20, and stores the loop unrolled program in the storage device 20 as the expanded program 22. It is a device to do. The storage device 20 may be built in the loop unrolling device 10.

本実施形態に係るループ展開装置10は、以下の構成を備えている。
・プログラム入力部11
・展開可否判定部12
・展開パラメタ決定部13
・展開プログラム作成部14
プログラム入力部11、展開可否判定部12、展開パラメタ決定部13、展開プログラム作成部14は、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサーによって実現してもよいし、一部或いは全部の構成要素を電子回路で形成してもよい。
The loop unrolling device 10 according to the present embodiment has the following configuration.
Program input unit 11
・ Deployment availability judgment unit 12
-Expansion parameter determination unit 13
・ Deployment program creation unit 14
The program input unit 11, the expandability determination unit 12, the expansion parameter determination unit 13, and the expansion program creation unit 14 may be realized by a computer program and a processor operating according to the computer program, or some or all of the components may be realized. It may be formed by an electronic circuit.

図2は、本実施形態においてループアンロールの対象となるソースプログラム21の例である。 FIG. 2 is an example of the source program 21 that is the target of loop unrolling in this embodiment.

プログラム入力部11は、記憶装置20に格納されたソースプログラム21の入力を受け付け、該プログラムに構文解析、字句解析、意味解析を実施して、その結果を展開可否判定部12に受け渡す。これらの構文解析、字句解析、意味解析は、既存技術を用いて実施すればよい。 The program input unit 11 receives the input of the source program 21 stored in the storage device 20, performs parsing, lexical analysis, and semantic analysis on the program, and passes the result to the expandability determination unit 12. These parsing, lexical analysis, and semantic analysis may be performed using existing techniques.

展開可否判定部12は、渡されたソースプログラム中のループについて、展開可否かどうかの判定を行う。展開可否かどうかの判定には、ループ内のデータの依存関係の有無、および、ループのカウンタ変数が線形に変化するかどうかの判定を行えばよい。ループ内のデータの依存関係が無く 且つ ループのカウンタ変数が線形に変化する場合、展開可否判定部12は、ループ展開可能と判定する。このループ内のデータの依存解析は、既存の技術を用いる実施すればよい。また、ループのカウンタ変数の増加値(以降、Lと表記)は、後述の展開パラメタ決定部13と展開プログラム作成部14にて利用される。 The expandability determination unit 12 determines whether or not the loop in the passed source program can be expanded. In order to determine whether or not expansion is possible, it is sufficient to determine whether or not there is a dependency of data in the loop and whether or not the counter variable of the loop changes linearly. When there is no dependency of the data in the loop and the counter variable of the loop changes linearly, the expandability determination unit 12 determines that the loop can be expanded. Dependency analysis of the data in this loop may be performed using existing technology. Further, the increment value of the counter variable of the loop (hereinafter referred to as L) is used by the expansion parameter determination unit 13 and the expansion program creation unit 14 described later.

図2で示すようなソースプログラムの例の場合、配列A、B、Cは異なる配列であるため、データの依存関係はない。また、ループのカウンタ変数iは、ループ1回転ごとに1ずつ増加するため、線形の増加である。したがって、図2で示すようなソースプログラムは、ループ展開可と判定される。また、ループカウンタ変数の増加値Lは1である。 In the case of the source program example as shown in FIG. 2, since the arrays A, B, and C are different arrays, there is no data dependency. Further, since the counter variable i of the loop increases by 1 for each rotation of the loop, it is a linear increase. Therefore, the source program as shown in FIG. 2 is determined to be loop unrollable. Further, the increase value L of the loop counter variable is 1.

展開パラメタ決定部13は、ループ展開可と判定されたループに関して、ループ中の配列カウンタ変数 や ループ中の計算式の計算量 に基づく所定の条件を用いて、ループ展開のための2種類のパラメタ、すなわちループ展開幅とループ展開段数を導出する。 The expansion parameter determination unit 13 uses two types of parameters for loop unrolling for the loop determined to be loop unrollable, using predetermined conditions based on the array counter variable in the loop and the calculation amount of the calculation formula in the loop. That is, the loop unrolling width and the number of loop unrolling stages are derived.

このループ展開幅(以降Mとも表記)は、展開前のループの何回転離れた計算処理を、同じループに展開するか否かを表す。また、ループ展開段数(以降、Nとも表記)は、展開前のループの何回転分の計算処理を、展開後のループ1回転で計算するかを表す。例えば、ループ展開前の1回転目の計算は、M+1回転目、2M+1回転目、・・・(N−1)×M+1回転目の計算と、同じループで計算されるように展開される。 This loop unrolling width (hereinafter, also referred to as M) indicates whether or not the calculation processing of the loop before expansion, which is separated by how many rotations, is expanded in the same loop. Further, the number of loop unrolling stages (hereinafter, also referred to as N) indicates how many rotations of the loop before expansion are calculated in one rotation of the loop after expansion. For example, the calculation of the first rotation before the loop unrolling is developed so as to be calculated in the same loop as the calculation of the M + 1th rotation, the 2M + 1th rotation, ... (N-1) × M + 1th rotation.

展開プログラム作成部14は、展開パラメタ決定部13が決定した ループ展開幅、ループ展開段数に従って、対象のループを展開したプログラム(展開済みプログラム22)を生成し、生成した展開済みプログラム22を記憶装置20に出力する。なお、展開済みプログラム22の出力先は、必ずしもソースプログラム21が記憶されていた記憶装置20に限定される必要は無く、例えばネットワークを介して接続されたストレージに記録するように構成しても良い。また、展開済みプログラム22の出力先は、ディスプレイに一時的に表示することや、プリンタへの印字することであっても構わない。 The expansion program creation unit 14 generates a program (expanded program 22) that expands the target loop according to the loop expansion width and the number of loop expansion stages determined by the expansion parameter determination unit 13, and stores the generated expanded program 22. Output to 20. The output destination of the expanded program 22 does not necessarily have to be limited to the storage device 20 in which the source program 21 is stored, and may be configured to record in, for example, a storage connected via a network. .. Further, the output destination of the expanded program 22 may be temporarily displayed on the display or printed on the printer.

[動作の説明]
次に、展開パラメタ決定部13及び展開プログラム作成部14の動作を説明する。
[Explanation of operation]
Next, the operations of the expansion parameter determination unit 13 and the expansion program creation unit 14 will be described.

まず、図3を用い、展開パラメタ決定部13の動作を説明する。図3は、展開パラメタ決定部13の動作を表すフローチャートである。 First, the operation of the expansion parameter determination unit 13 will be described with reference to FIG. FIG. 3 is a flowchart showing the operation of the expansion parameter determination unit 13.

展開パラメタ決定部13(ループ展開装置10)は、ソースプログラム21のループの回転数(Z)、および、カウンタ変数の初期値(K)を導出する(S301)。 The expansion parameter determination unit 13 (loop expansion device 10) derives the loop rotation speed (Z) of the source program 21 and the initial value (K) of the counter variable (S301).

図2で示したソースプログラム21のループの場合、カウンタ変数 i は、100から10000まで1ずつ増える。したがって、展開パラメタ決定部13は、回転数Zを“9901”、カウンタ変数の初期値Kを“100”と導出する。 In the case of the loop of the source program 21 shown in FIG. 2, the counter variable i is incremented by 1 from 100 to 10000. Therefore, the expansion parameter determination unit 13 derives the rotation speed Z as “9901” and the initial value K of the counter variable as “100”.

次に、展開パラメタ決定部13は、ソースプログラム21のループ1回転のコスト(C)を導出する(S302)。本実施形態では、ループ1回転のコストを、ループ内の演算の回数であるとする。図2で示されるソースプログラム21のループの場合、加算が1回であるので、展開パラメタ決定部13は、コストC=1と導出する。
なお、本実施形態では、ループ1回転のコストを演算の回数としたが、ループ内の配列データへのメモリアクセス回数(ロード回数やストア回数)など、他の要因を用いてコストを決定してもよい。ループ1回転のコストの決定方法は、特に限定するものではない。例えば、ループ内の演算の回数とメモリアクセス回数を組み合わせてもよい。
Next, the expansion parameter determination unit 13 derives the cost (C) for one rotation of the loop of the source program 21 (S302). In this embodiment, the cost of one rotation of the loop is the number of operations in the loop. In the case of the loop of the source program 21 shown in FIG. 2, since the addition is once, the expansion parameter determination unit 13 derives the cost C = 1.
In the present embodiment, the cost of one rotation of the loop is used as the number of operations, but the cost is determined by using other factors such as the number of memory accesses (number of loads and number of stores) to the array data in the loop. May be good. The method for determining the cost of one loop rotation is not particularly limited. For example, the number of operations in the loop and the number of memory accesses may be combined.

次に、展開パラメタ決定部13は、最小コスト閾値(Cmin)を参照し、Cmin ≦ C × N となる最小の整数Nを導出する(S303)。最小コスト閾値(Cmin)は、ループ展開装置10ごと もしくは ソースプログラム21をコンパイルした命令列を実行するベクトル計算機ごと にあらかじめ定めておく定数値である。なお、設定方法に関しては特に制限するものではない。本実施形態では、Cmin=32と定まっているものとする。Cmin=32であり、C=1である場合、Cmin ≦ C ×Nを満たす最小の整数N=32となる。 Next, the expansion parameter determination unit 13 refers to the minimum cost threshold value (C min ) and derives the minimum integer N c such that C min ≤ C × N c (S303). The minimum cost threshold value (C min ) is a constant value predetermined for each loop unrolling device 10 or for each vector computer that executes an instruction sequence in which the source program 21 is compiled. The setting method is not particularly limited. In this embodiment, it is assumed that C min = 32. When C min = 32 and C = 1, the smallest integer N c = 32 satisfying C min ≤ C × N c .

次に、展開パラメタ決定部13は、ループ展開段数の最大値(Nmax)を参照し、先に計算したNとループ展開段数の最大値(Nmax)との小さい方を、ループ展開段数Nと決定する(S304)。このループ展開段数の最大値(Nmax)は、ループ展開装置10ごと、もしくは、ソースプログラム21をコンパイルした命令列を実行するベクトル計算機ごとにあらかじめ定めておく定数値である。なお、設定方法に関しては特に制限するものではない。本実施形態では、Nmax=4と定まっているものとする。N=32とNmax=4の小さい方の値である“4”がループ展開段数Nに決定される。 Next, the expansion parameter determination unit 13 refers to the maximum value (N max ) of the number of loop unrolling stages, and determines the smaller of the previously calculated N c and the maximum value (N max ) of the number of loop unrolling stages. Determined to be N (S304). The maximum value (N max ) of the number of loop unrolling stages is a constant value predetermined for each loop unrolling device 10 or for each vector computer that executes the instruction sequence in which the source program 21 is compiled. The setting method is not particularly limited. In this embodiment, it is assumed that N max = 4. “4”, which is the smaller value of N c = 32 and N max = 4, is determined as the number of loop unrolling stages N.

次に、展開パラメタ決定部13は、先に計算したループの回転数Zとループ展開段数Nとを参照し、M×N<Zとなる最大の整数Mを、ループ展開幅Mとして決定する(S305)。本例では、Z=9901、N=4であるので、M=2475と決定される。 Next, the expansion parameter determination unit 13 refers to the previously calculated loop rotation speed Z and the loop expansion stage number N, and determines the maximum integer M such that M × N <Z as the loop expansion width M ( S305). In this example, since Z = 9901 and N = 4, it is determined that M = 2475.

次に、図4を用い、展開プログラム作成部14の動作を説明する。図4は、展開プログラム作成部14の動作を表すフローチャートである。 Next, the operation of the expansion program creation unit 14 will be described with reference to FIG. FIG. 4 is a flowchart showing the operation of the expansion program creation unit 14.

まず、展開プログラム作成部14(ループ展開装置10)は、二重ループ構造を作成する(S401)。外側ループのカウンタ変数は、入力のソースプログラム21のループのカウンタ変数と同じ変数に設定する。図2で示されるソースプログラム21の場合、外側ループのカウンタ変数はカウンタ変数 i が展開プログラム作成部14によって設定される。このカウンタ変数の初期値は“0”と設定する。また、ループ1回転ごとのカウンタ変数の増加値は、上記展開パラメタ決定部13で決定したループ展開幅M、ループ展開段数Nを用い、N×Mとする。また、ループの終了条件は、ソースプログラムのループ回転数Zを用い、i<Z−M×N+1とする。内側ループのカウンタ変数は、ソースプログラム21に現れない任意の変数を用いる。ここでは内側ループのカウンタ変数を j と表す。この内側ループのカウンタ変数の初期値は0に設定する。また、内側ループのループ1回転ごとのカウンタ変数の増加値は、ソースプログラム21のループのカウンタ変数の増加値Lに設定する。内側ループのループ終了条件は、j<M に設定する。 First, the expansion program creation unit 14 (loop unrolling device 10) creates a double loop structure (S401). The counter variable of the outer loop is set to the same variable as the counter variable of the loop of the input source program 21. In the case of the source program 21 shown in FIG. 2, the counter variable i of the outer loop is set by the expansion program creation unit 14. The initial value of this counter variable is set to "0". Further, the increase value of the counter variable for each rotation of the loop is N × M using the loop expansion width M and the number of loop expansion stages N determined by the expansion parameter determination unit 13. Further, the loop termination condition is i <Z−M × N + 1 using the loop rotation speed Z of the source program. As the counter variable of the inner loop, any variable that does not appear in the source program 21 is used. Here, the counter variable of the inner loop is represented as j. The initial value of the counter variable of this inner loop is set to 0. Further, the increase value of the counter variable for each rotation of the loop of the inner loop is set to the increase value L of the counter variable of the loop of the source program 21. The loop end condition of the inner loop is set to j <M.

次に、展開プログラム作成部14は、作成した2重ループ構造のループ内での計算式を作成する(S402)。まず、展開プログラム作成部14は、ソースプログラム21のループ内の計算式を、ループ展開段数分(すなわちN個分)に並べる。次に、展開プログラム作成部14は、ループ内ループ変数iを、(i+K+j+0×L×M)、(i+K+j+1×L×M)、(i+K+j+2×L×M)、…、(i+K+j+(N−1)×L×M)のN種類の項に置換する。Kは、先述の通り、元のソースコード21のループのカウンタ変数の初期値である。 Next, the expansion program creation unit 14 creates a calculation formula in the loop of the created double loop structure (S402). First, the expansion program creation unit 14 arranges the calculation formulas in the loop of the source program 21 for the number of loop expansion stages (that is, N). Next, the expansion program creation unit 14 sets the loop variable i in the loop to (i + K + j + 0 × L × M), (i + K + j + 1 × L × M), (i + K + j + 2 × L × M), ..., (I + K + j + (N-1)). Replace with N kinds of terms of × L × M). As described above, K is the initial value of the counter variable of the loop of the original source code 21.

次に、展開プログラム作成部14は、余りループを作成する(S403)。余りループは、ループ展開した際に展開段数に満たない回転数分のループを処理するループである。余りループのカウンタ変数は、上記二重ループのカウンタ変数を引き継ぐ。展開プログラム作成部14は、余りループのカウンタ変数の初期値を、上記二重ループのカウンタ変数のループ終了時の値iを用い、L×i+Kに設定する。また、展開プログラム作成部14は、余りループのカウンタ変数の増加値を L 、終了条件をi<L×Z+Kに設定する。そして、展開プログラム作成部14は、余りループのループ内計算式に、ソースプログラムのループ内の計算式をそのまま1個分配置する。 Next, the expansion program creation unit 14 creates a remainder loop (S403). The remainder loop is a loop that processes a loop for the number of rotations less than the number of expansion stages when the loop is expanded. The counter variable of the remainder loop inherits the counter variable of the double loop. The expansion program creation unit 14 sets the initial value of the counter variable of the remainder loop to L × i + K by using the value i at the end of the loop of the counter variable of the double loop. Further, the expansion program creation unit 14 sets the increase value of the counter variable of the remainder loop to L and the end condition to i <L × Z + K. Then, the expansion program creation unit 14 arranges one calculation formula in the loop of the source program as it is in the calculation formula in the loop of the remainder loop.

ここで、展開プログラム作成部14の動作を、図2のソースプログラム21を入力とした場合を実例として説明する。図5は、展開プログラム作成部14が図2のソースプログラム21の入力を受けて出力するプログラム(展開済みプログラム22)である。 Here, the operation of the expansion program creation unit 14 will be described as an example when the source program 21 of FIG. 2 is input. FIG. 5 is a program (expanded program 22) that the expansion program creation unit 14 receives and outputs the input of the source program 21 of FIG.

まず、展開プログラム作成部14は、二重ループ構造を作成する(二重ループ構造作成工程;S401)。外側ループのカウンタ変数は、ソースプログラムと同じ i に設定する。また、カウンタ変数初期値は“0”、カウンタ変数の増加値は、ループ展開幅Mが“2745”、ループ展開段数が“4”であるので、“2745×4”に設定する。ループの終了条件は、ソースプログラムのループの回転数Zが“9901”であるので、“i<9901−2475×4+1”となる。展開プログラム作成部14は、これらを統合して、図5の1行目の for文を作成する。次に、展開プログラム作成部14は、内側ループについて、カウンタ変数をソースプログラム上に出現しないjに設定する。jの初期値は“0”、増加値は、ソースプログラム21のカウンタ変数の増加値Lである“1”を設定する。また、ループの終了条件は、ループ展開幅Mの“2745”に設定する。このように、展開プログラム作成部14は、図5の2行目の for文 を作成する。 First, the expansion program creation unit 14 creates a double loop structure (double loop structure creation step; S401). Set the counter variable of the outer loop to the same i as the source program. Further, the initial value of the counter variable is "0", and the increase value of the counter variable is set to "2745 x 4" because the loop unrolling width M is "2745" and the number of loop unrolling stages is "4". The loop end condition is "i <9901-2475 x 4 + 1" because the rotation speed Z of the loop of the source program is "9901". The expansion program creation unit 14 integrates these to create the for statement on the first line of FIG. Next, the expansion program creation unit 14 sets the counter variable to j, which does not appear in the source program, for the inner loop. The initial value of j is set to "0", and the increase value is set to "1", which is the increase value L of the counter variable of the source program 21. Further, the loop end condition is set to "2745" of the loop unrolling width M. In this way, the expansion program creation unit 14 creates the for statement on the second line of FIG.

次に、展開プログラム作成部14は、内側ループ計算式を作成する(内側ループ計算式作成工程;S402)。ソースプログラムの計算式は、図2の2行目の1式だけである。展開プログラム作成部14は、この式を、ループ展開段数Nである4個分配置する。このとき、展開プログラム作成部14は、計算式内に現れるカウンタ変数iを、それぞれ(i+100+j+0×1×2475),(i+100+j+1×1×2475),(i+100+j+2×1×2475),(i+100+j+0×1×2475)の4種類の項に置換する。その結果が、図5の3行目から6行目の式である。そして、内側ループの終了を示す括弧(図5、7行目)と外側ループの終了を示す括弧(図5、8行目)が続く。 Next, the expansion program creation unit 14 creates an inner loop calculation formula (inner loop calculation formula creation step; S402). The calculation formula of the source program is only one formula in the second line of FIG. The expansion program creation unit 14 arranges four of these equations, which is the number of loop expansion stages N. At this time, the expansion program creation unit 14 sets the counter variables i appearing in the calculation formula as (i + 100 + j + 0 × 1 × 2475), (i + 100 + j + 1 × 1 × 2475), (i + 100 + j + 2 × 1 × 2475), (i + 100 + j + 0 × 1 ×, respectively. Replace with the four types of terms in 2475). The result is the equation in the 3rd to 6th lines of FIG. Then, parentheses indicating the end of the inner loop (lines 5 and 7) and parentheses indicating the end of the outer loop (lines 5 and 8) follow.

次に、展開プログラム作成部14は、余りループを作成する(余りループ作成工程;S403)。余りループのカウンタ変数は、先の二重ループのカウンタ変数である i を用いる。そして、カウンタ変数の初期値は、ソースプログラムのカウンタ変数の増加値Lである“1”、ソースプログラムのカウンタ変数の初期値Kである“100”を用い、“1×i+100”となる。また、カウンタ変数の増加値はLである“1”、ループの終了条件は、ソースプログラムのループの回転数Zである“9901”を用い、“i<1×9901+100”となる。図5の9行目が、余りループのループ構造を示す for文 である。そして次に、ソースプログラム21のループの計算式をそのまま配置し(図5、10行目)、ループの終了を示す括弧が続く(図5、11行目)。 Next, the expansion program creation unit 14 creates a remainder loop (remainder loop creation step; S403). As the counter variable of the remainder loop, i, which is the counter variable of the previous double loop, is used. Then, the initial value of the counter variable is "1 x i + 100" by using "1" which is the increase value L of the counter variable of the source program and "100" which is the initial value K of the counter variable of the source program. Further, the increase value of the counter variable is “1” which is L, and the end condition of the loop is “9901” which is the rotation speed Z of the loop of the source program, and “i <1 × 9901 + 100”. The 9th line in FIG. 5 is a for statement showing the loop structure of the remainder loop. Then, the calculation formula of the loop of the source program 21 is arranged as it is (FIGS. 5 and 10), followed by parentheses indicating the end of the loop (FIGS. 5 and 11).

このようにして、展開プログラム作成部14は、展開ループを作成する。 In this way, the expansion program creation unit 14 creates an expansion loop.

また、展開ループ中の定数を用いた項は、図6のように、計算後の値としてもよい。 Further, the term using the constant in the expansion loop may be a calculated value as shown in FIG.

図5および図6を参照してわかるように、上記一連のループ展開処理によって、元のソースプログラムではループ中の計算式数が1個であったが、4個の計算式を持つループ構造のプログラム(展開済みプログラム22)が作成されている。すなわち、展開済みプログラム22は、ソースプログラムレベルで、ソースプログラム21をループアンロールできていることがわかる。 As can be seen with reference to FIGS. 5 and 6, due to the above series of loop unrolling processes, the number of calculation formulas in the loop was one in the original source program, but a loop structure having four calculation formulas A program (expanded program 22) has been created. That is, it can be seen that the expanded program 22 can loop unroll the source program 21 at the source program level.

また、この展開後プログラム22をベクトル計算機で実行できるようにコンパイルして実行した場合、それぞれのベクトル演算のメモリアクセスは、連続アクセスとなり効率のよいメモリアクセスを行うベクトル演算となる。 Further, when the expanded program 22 is compiled and executed so that it can be executed by a vector computer, the memory access of each vector operation becomes continuous access, which is a vector operation for efficient memory access.

すなわち、本発明によれば、ベクトル計算機に最適なループ展開を施したプログラムを作成できるソースプログラム変換システムを提供できる。 That is, according to the present invention, it is possible to provide a source program conversion system capable of creating a program with optimal loop unrolling for a vector computer.

ここで、ループ展開装置10(展開パラメタ決定部13)の追加及び置換機能を説明する。上記展開パラメタ決定部13は、ループ展開幅を、(ループ回転数÷ループ展開段数)以下となる整数としている。これに対して、本追加及び置換機能を具備する展開パラメタ決定部13は、ループ展開幅に、展開済みプログラム22を実行するベクトル計算機(ソースプログラム21を実行する計算機)のベクトル長(以降VLと表記)を設定する。 Here, the addition and replacement functions of the loop unrolling device 10 (expansion parameter determination unit 13) will be described. The expansion parameter determination unit 13 sets the loop expansion width to an integer equal to or less than (loop rotation speed ÷ loop expansion stage number). On the other hand, the expansion parameter determination unit 13 having the addition / replacement function has the loop expansion width and the vector length of the vector computer (computer that executes the source program 21) that executes the expanded program 22 (hereinafter referred to as VL). Notation) is set.

以下の説明では、ソースプログラムを実行するベクトル計算機が決まっており、その計算機のベクトル長がループ展開装置10内またはソースプログラム内のどちらかで保持されているものとする。また、操作者(プログラマ)がループ転回装置10にベクトル長を手入力するようにしてもよい。 In the following description, it is assumed that the vector computer that executes the source program is determined, and the vector length of the computer is held in either the loop unrolling device 10 or the source program. Further, the operator (programmer) may manually input the vector length to the loop turning device 10.

また、ループ転回装置10(展開パラメタ決定部13)がソースプログラムを実行させるベクトル計算機のベクトル長 又は 機種 がソースコード中に記載されているか前処理で判別する構成としてもよい。機種を特定できた際には、あらかじめ準備されている機種−ベクトル長データベースを参照してその機種のベクトル長の値を取得すればよい。 Further, the loop turning device 10 (expansion parameter determination unit 13) may be configured to determine by preprocessing whether the vector length or model of the vector computer that executes the source program is described in the source code. When the model can be specified, the value of the vector length of the model may be obtained by referring to the model-vector length database prepared in advance.

図7は、本動作例にかかる展開パラメタ決定部13の動作を示すフローチャートである。ループ展開段数Nを決定するまでの工程(S301からS304)は、先に説明した図3のフローチャートと同じであるため、説明を省略する。展開パラメタ決定部13は、ループ展開段数Nの決定後(S304の実行後)、ループ展開幅Mを決める。このループ展開幅Mは、ソースプログラムを実行する計算機のベクトル長VLを、ループ展開幅Mとして決定する(S705)。 FIG. 7 is a flowchart showing the operation of the expansion parameter determination unit 13 according to this operation example. Since the steps (S301 to S304) until the number of loop unrolling stages N is determined are the same as the flowchart of FIG. 3 described above, the description thereof will be omitted. The expansion parameter determination unit 13 determines the loop expansion width M after determining the number of loop expansion stages N (after executing S304). The loop unrolling width M determines the vector length VL of the computer that executes the source program as the loop unrolling width M (S705).

本変形例にかかるソースプログラム21の例として、先述の図2で示したループを用いて動作を説明する。また、ソースプログラムを実行する計算機のベクトル長VLが“256”であるとする。ループ展開段数Nを決定するまでの工程は、先に説明した図3のフローチャートと同じであるため、展開パラメタ決定部13によって、ソースプログラムのループの回転数Zは“9901”、カウンタ変数初期値Kは“100”、ループ展開段数Nは“4”と決定される。最後に、ループ展開幅Mは、ソースプログラムを実行する計算機のベクトル長VLである“256”と決定される。 As an example of the source program 21 according to this modification, the operation will be described using the loop shown in FIG. 2 described above. Further, it is assumed that the vector length VL of the computer that executes the source program is "256". Since the process up to determining the number of loop unrolling stages N is the same as the flowchart of FIG. 3 described above, the expansion parameter determination unit 13 sets the loop unrolling number Z of the source program to "9901" and the initial value of the counter variable. K is determined to be "100", and the number of loop unrolling stages N is determined to be "4". Finally, the loop unrolling width M is determined to be "256", which is the vector length VL of the computer that executes the source program.

図8は、上記展開パラメタ決定部で決定したパラメタを用い、展開プログラムで作成したプログラム(展開済みプログラム22)を示したものである。図9は、さらに定数値が複数含まれる項を計算して、項を単純化した場合の展開済みプログラム22である。 FIG. 8 shows a program (expanded program 22) created by the expansion program using the parameters determined by the expansion parameter determination unit. FIG. 9 is an expanded program 22 in the case where a term including a plurality of constant values is further calculated to simplify the term.

図8および図9を参照してわかるように、上記一連のループ展開処理によって、元のソースプログラムではループ中の計算式数が1個であったが、4個の計算式を持つループ構造のプログラム(展開済みプログラム22)が作成されている。すなわち、展開済みプログラム22は、ソースプログラムレベルで、ソースプログラム21をループアンロールできていることがわかる。 As can be seen with reference to FIGS. 8 and 9, due to the above series of loop unrolling processes, the number of calculation formulas in the loop was one in the original source program, but a loop structure having four calculation formulas A program (expanded program 22) has been created. That is, it can be seen that the expanded program 22 can loop unroll the source program 21 at the source program level.

また、本実施形態の第1の変形例のループ展開装置10でループ展開した展開プログラムをベクトル化した場合、ループ内の複数のベクトル演算でアクセスするメモリー領域は連続になる。例えば、図8および図9の3行目計算式と4行目の計算式を考えた場合、3行目の計算式中の“B[i+j+100] ”という項は、ベクトル化すると、“B[i+j+100]”から“B[i+j+355]”とメモリー上に連続な256要素である。4行目の“B[i+j+356] ”という項は、ベクトル化すると、“B[i+j+356] ”から“B[i+j+611]”と メモリー上に連続な256要素である。これら512要素は全てメモリー上に連続である(5行目、6行目の項も同様で全てメモリー上に連続である)。 Further, when the loop unrolling program developed by the loop unrolling device 10 of the first modification of the present embodiment is vectorized, the memory areas accessed by a plurality of vector operations in the loop become continuous. For example, when considering the calculation formulas in the third and fourth lines of FIGS. 8 and 9, the term "B [i + j + 100]" in the calculation formula in the third line is vectorized. , "B [i + j + 100]" to "B [i + j + 355]", which is a continuous 256 elements on the memory. The term “B [i + j + 356]” on the 4th line is vectorized from “B [i + j + 356]” to “B [i + j + 611]”, which is a continuous 256 in memory. It is an element. All of these 512 elements are continuous in the memory (the same applies to the terms in the 5th and 6th lines, and all are continuous in the memory).

また、この展開後プログラム22を該当ベクトル計算機で実行できるようにコンパイルして実行した場合、該当ベクトル計算機での それぞれのベクトル演算のメモリアクセスは、連続アクセスとなり より効率のよいメモリアクセスを行うベクトル演算となる。 Further, when the expanded program 22 is compiled and executed so that it can be executed by the corresponding vector computer, the memory access of each vector operation by the corresponding vector computer becomes continuous access, and the vector operation performs more efficient memory access. It becomes.

他方、先に示した展開方法は、汎用的なベクトル計算機向けのループアンローリングを実施できる利点を有る。 On the other hand, the expansion method shown above has an advantage that loop unrolling for a general-purpose vector computer can be performed.

以上説明したように、本発明を適用したソースプログラム変換システムは、ベクトル計算機に最適なループ展開を施したプログラムを作成できる。 As described above, the source program conversion system to which the present invention is applied can create a program with optimal loop unrolling for a vector computer.

尚、ソースプログラム変換システムの各部は、図10に例示するようなコンピュータシステムのハードウェアとソフトウェアの組み合わせを用いて実現すればよい。このコンピュータシステムは、所望形態に合わせた、1ないし複数のプロセッサーとメモリーを含む。また、このコンピュータシステムの形態では、各部は、上記メモリーにソースプログラム変換プログラムが展開され、このプログラムに基づいて1ないし複数のプロセッサー等のハードウェアを実行命令群やコード群で動作させることによって、実現すればよい。この際、必要に応じて、このプログラムは、オペーレティングシステムや、マイクロプログラム、ドライバなどのソフトウェアが提供する機能と協働して、各部を実現することとしてもよい。 Each part of the source program conversion system may be realized by using a combination of hardware and software of a computer system as illustrated in FIG. This computer system includes one or more processors and memory tailored to the desired form. Further, in the form of this computer system, in each part, a source program conversion program is expanded in the above memory, and based on this program, hardware such as one or more processors is operated by an execution instruction group or a code group. It should be realized. At this time, if necessary, this program may realize each part in cooperation with the functions provided by the software such as the operating system, the microprogram, and the driver.

メモリーに展開されるプログラムデータは、プロセッサーを1ないし複数の上述した各部として動作させる実行命令群やコード群、テーブルファイル、コンテンツデータなどを適宜含む。 The program data expanded in the memory appropriately includes an execution instruction group, a code group, a table file, content data, and the like that operate the processor as one or more of the above-mentioned parts.

また、このコンピュータシステムは、必ずしも一つの装置として構築される必要はなく、複数のサーバやコンピュータ或いは仮想マシンなどが組み合わさって、所謂、シンクライアントや、分散コンピューティング、クラウドコンピューティングで構築されてもよい。また、コンピュータシステムの一部或いは全ての各部をハードウェアやファームウェア(例えば、一ないし複数のLSI:Large-Scale Integration,FPGA:Field Programmable Gate Array,電子素子の組み合わせ)で置換することとしてもよい。同様に、各部の一部のみをハードウェアやファームウェアで置換することとしてもよい。 In addition, this computer system does not necessarily have to be constructed as a single device, but is constructed by combining multiple servers, computers, virtual machines, etc., so-called thin clients, distributed computing, and cloud computing. May be good. Further, a part or all parts of the computer system may be replaced with hardware or firmware (for example, one or more LSIs: Large-Scale Integration, FPGA: Field Programmable Gate Array, a combination of electronic elements). Similarly, only a part of each part may be replaced with hardware or firmware.

また、このプログラムは、記録媒体に非一時的に記録されて頒布されても良い。当該記録媒体に記録されたプログラムは、有線、無線、又は記録媒体そのものを介してメモリーに読込まれ、プロセッサー等を動作させる。 Further, this program may be temporarily recorded on a recording medium and distributed. The program recorded on the recording medium is read into the memory via wired, wireless, or the recording medium itself, and operates the processor or the like.

尚、本明細書では、記録媒体には、類似するタームの記憶媒体やメモリー装置、ストレージ装置なども含むこととする。この記録媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリー装置、ハードディスク装置、テープメディアなどが挙げられる。また、記録媒体は、不揮発性であることが望ましい。また、記録媒体は、揮発性モジュール(例えばRAM:Random Access Memory)と不揮発性モジュール(例えばROM:Read Only Memory)の組み合わせを用いることとしてもよい。 In the present specification, the recording medium also includes a storage medium, a memory device, a storage device, and the like of similar terms. Examples of this recording medium include optical disks, magnetic disks, semiconductor memory devices, hard disk devices, tape media, and the like. Further, it is desirable that the recording medium is non-volatile. Further, as the recording medium, a combination of a volatile module (for example, RAM: Random Access Memory) and a non-volatile module (for example, ROM: Read Only Memory) may be used.

上記形態を別の表現で説明すれば、プロセッサーを、ループ展開装置として動作させる情報処理リソースを、メモリーに展開されたソースプログラム変換プログラムに基づき、図1に示した、プログラム入力部、展開可否判定部、展開パラメタ決定部、展開プログラム作成部として動作させることで、その結果ソースプログラム変換システムを実現できる。各構成要素は、ソフトウェアプログラムの機能単位(ソフトウェアモジュール)と捉えることも可能である。ただし、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。 To explain the above embodiment in another expression, the information processing resource that operates the processor as a loop unrolling device is the program input unit and the expandability determination shown in FIG. 1 based on the source program conversion program expanded in the memory. As a result, the source program conversion system can be realized by operating as a unit, an expansion parameter determination unit, and an expansion program creation unit. Each component can also be regarded as a functional unit (software module) of a software program. However, the division of each part shown in these drawings is a configuration for convenience of explanation, and various configurations can be assumed at the time of mounting.

同様に、上記形態を更に別の表現で説明すれば、記録媒体は、メモリーに展開されて情報処理リソースで動作するソースプログラム変換プログラムを含み、情報処理リソースに、プログラム入力工程、展開可否判定工程、展開パラメタ決定工程、展開プログラム作成工程を適時実行させることで、ソースプログラム変換システム(ループ展開装置)を構築できる。 Similarly, if the above embodiment is described in yet another expression, the recording medium includes a source program conversion program that is expanded in the memory and operates on the information processing resource, and the information processing resource includes a program input step and a deployment possibility determination step. A source program conversion system (loop unrolling device) can be constructed by executing the unrolling parameter determination process and the unrolling program creation process in a timely manner.

なお、実施形態を例示して本発明を説明した。しかし、本発明の具体的な構成は前述の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の変更があってもこの発明に含まれる。例えば、上述した実施形態のブロック構成の分離併合、手順の入れ替えなどの変更は本発明の趣旨および説明される機能を満たせば自由であり、上記説明が本発明を限定するものではない。 The present invention has been described by exemplifying embodiments. However, the specific configuration of the present invention is not limited to the above-described embodiment, and is included in the present invention even if there is a change within a range that does not deviate from the gist of the present invention. For example, changes such as separation and merging of block configurations and replacement of procedures of the above-described embodiments are free as long as the gist of the present invention and the functions described are satisfied, and the above description does not limit the present invention.

また、上記の実施形態の一部又は全部は、以下のようにも記載されうる。尚、以下の付記は本発明をなんら限定するものではない。
[付記1]
変換対象とするソースプログラムを受け付けるプログラム入力部と、
前記プログラム入力部に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定部と、
前記展開可否判定部が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定部と、
前記展開パラメタ決定部が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成部と、
を含み成るソースプログラム変換システム。
In addition, some or all of the above embodiments may also be described as follows. The following notes do not limit the present invention in any way.
[Appendix 1]
A program input section that accepts the source program to be converted,
Expandability determination unit that identifies each loop included in the source program input to the program input unit, analyzes the data dependency related to expansion for each loop, and determines whether or not each loop can be expanded. When,
With respect to the loop determined to be expandable by the expansion possibility determination unit, the number of loop expansion stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated in the loop after expansion, and the number of loop expansion stages before expansion. An expansion parameter determination unit that derives the loop expansion width, which is a positive integer indicating how many rotations of the loop the loop is calculated in one rotation of the loop after expansion.
An expansion program creation unit that receives the number of loop expansion stages and the loop expansion width determined by the expansion parameter determination unit, generates and processes a program having an expanded loop, and outputs it as an expanded program.
A source program conversion system that includes.

[付記2]
上記付記1に記載のソースプログラム変換システムにおいて、
前記プログラム入力部は、ベクトル計算機で用いるソースプログラムを受け付け、
前記展開プログラム作成部は、前記展開パラメタ決定部によって決定された、ループ展開段数とループ展開幅に基づいて、前記ベクトル計算機向けに展開したループを有するプログラムを生成処理して、前記展開済みプログラムを出力する
請求項1記載のソースプログラム変換システム。
[Appendix 2]
In the source program conversion system described in Appendix 1 above,
The program input unit receives the source program used in the vector computer and receives it.
The expansion program creation unit generates and processes a program having a loop expanded for the vector computer based on the number of loop expansion stages and the loop expansion width determined by the expansion parameter determination unit, and produces the expanded program. The source program conversion system according to claim 1 for output.

[付記3]
上記付記1又は2に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの中の展開するループの中の、計算回数 および メモリアクセス回数 の少なくとも一方に基づいて、ループ処理コスト(C)を算出し、所定の閾値(Cmin)を用いて、Cmin ≦ C×N を満たす最小の整数Nを、ループ展開段数に決定するソースプログラム変換システム。
[Appendix 3]
In the source program conversion system described in Appendix 1 or 2 above,
The expansion parameter determination unit calculates the loop processing cost (C) based on at least one of the number of calculations and the number of memory accesses in the loop to be expanded in the received source program, and calculates a predetermined threshold value (Cmin). ) Is used to determine the smallest integer N satisfying Cmin ≤ C × N as the number of loop unrolling stages.

[付記4]
上記付記1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの展開するループのループ回転数を計算し、決定したループ展開段数を参照して、ループ展開幅に、(ソースプログラムのループ回転数÷ループ展開段数)以下となる正整数を設定するソースプログラム変換システム。
[Appendix 4]
In the source program conversion system described in any one of the above appendices 1 to 3,
The expansion parameter determination unit calculates the loop rotation speed of the loop developed by the source program that has been received, refers to the determined loop expansion stage number, and sets the loop expansion width as (the loop rotation speed of the source program ÷ the loop expansion stage number). ) A source program conversion system that sets the following positive integers.

[付記5]
上記付記1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、ループ展開幅に、展開済みプログラムを実行するベクトル計算機のベクトル長を設定するソースプログラム変換システム。
[Appendix 5]
In the source program conversion system described in any one of the above appendices 1 to 3,
The expansion parameter determination unit is a source program conversion system that sets the vector length of the vector computer that executes the expanded program in the loop expansion width.

[付記6]
上記付記1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、前記ソースプログラムを実行させるベクトル計算機のベクトル長 又は 機種 が前記ソースコード中に記載されているか判別し、ベクトル長 又は 機種 が記載されていた場合、該記載されていたベクトル長 又は 機種から定まるベクトル長 を識別して、ループ展開幅に識別したベクトル長を設定するソースプログラム変換システム。
[Appendix 6]
In the source program conversion system described in any one of the above appendices 1 to 3,
The expansion parameter determination unit determines whether the vector length or model of the vector computer that executes the source program is described in the source code, and if the vector length or model is described, the described vector. A source program conversion system that identifies the vector length determined by the length or model and sets the identified vector length in the loop expansion width.

[付記7]
上記付記1から6の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開プログラム作成部は、外側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、前記ループ展開幅と前記ループ展開段数の積ずつ増加し、ソースプログラムのループの回転数と前記積の値の差以下であるまでループし、内側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、ソースプログラムのループのカウンタ変数のループ1回転ごとの増加値ずつ増加し、前記ループ展開幅より小さい間ループするような、2重ループを作成し、
当該2重ループの中に、ソースプログラムのループ中の計算式を、前記ループ展開段数分展開する
ソースプログラム変換システム。
[Appendix 7]
In the source program conversion system according to any one of the above appendices 1 to 6,
In the expansion program creation unit, the outer loop increases the counter variable from the initial value 0 by the product of the loop expansion width and the number of loop expansion stages for each loop rotation, and the number of rotations of the loop of the source program and the said. The loop is looped until it is less than or equal to the difference between the product values, and the inner loop increases the counter variable from the initial value of 0 by the increase value of the counter variable of the source program loop for each loop rotation. Create a double loop that loops for less than the loop expansion width.
A source program conversion system that expands the calculation formula in the loop of the source program in the double loop by the number of loop unrolling stages.

[付記8]
変換対象とするソースプログラムを受け付け、
前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定し、
展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数を導出処理すると共に、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理し、
導出したループ展開段数とループ展開幅に基づいて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する
情報処理システムによるソースプログラム変換方法。
[Appendix 8]
Accept the source program to be converted,
Each loop included in the source program is identified, the data dependency related to expansion is analyzed for each loop, and whether or not each loop can be expanded is determined.
For the loop determined to be expandable, in the loop after expansion, the number of loop expansion stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated, is derived, and what is in the loop before expansion. The loop unrolling width, which is a positive integer indicating whether to calculate the loop unrolled loop in one rotation of the loop after expansion, is derived.
A source program conversion method by an information processing system that generates and processes a program having expanded loops based on the number of derived loop unrolling stages and the loop unrolling width, and outputs it as an expanded program.

[付記9]
情報処理リソースを、
変換対象とするソースプログラムを受け付けるプログラム入力手段と、
前記プログラム入力手段に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定手段と、
前記展開可否判定手段が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定手段と、
前記展開パラメタ決定手段が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成手段、
として動作させるソースプログラム変換プログラム。
[Appendix 9]
Information processing resources,
Program input means that accepts the source program to be converted,
Expansion propriety determination means for identifying each loop included in the source program input to the program input means, analyzing the data dependency related to expansion for each loop, and determining whether or not each loop can be expanded. When,
With respect to the loop determined to be expandable by the expansion possibility determination means, the number of loop expansion stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated in the loop after expansion, and the number of loop expansion stages before expansion. An expansion parameter determining means for deriving the loop expansion width, which is a positive integer indicating how many rotations of the loop the loop is calculated in one rotation of the loop after expansion.
An expansion program creating means that receives the number of loop expansion stages and the loop expansion width determined by the expansion parameter determining means, generates and processes a program having an expanded loop, and outputs it as an expanded program.
Source program conversion program that operates as.

[付記10]
上記付記9に記載のソースプログラム変換プログラムであって、前記情報処理リソースは、プロセッサーとメモリーとバスの組み合わせを用いるソースプログラム変換プログラム。
[Appendix 10]
The source program conversion program according to Appendix 9, wherein the information processing resource is a source program conversion program that uses a combination of a processor, a memory, and a bus.

[付記11]
上記付記9又は10に記載のソースプログラム変換プログラムをコンピュータ読取可能に非一時的に保持する記録媒体。
[Appendix 11]
A recording medium that non-temporarily holds the source program conversion program according to Appendix 9 or 10 in a computer-readable manner.

本発明によれば、ソフトウェアプログラムを入力として、対象のベクトル計算機向けに最適化されたソフトウェアプログラムを作成するソフトウェア最適化装置といった用途に適用できる。 According to the present invention, it can be applied to an application such as a software optimization device that creates a software program optimized for a target vector computer by using a software program as an input.

10 ループ展開装置(情報処理装置、情報処理リソース)
11 プログラム入力部
12 展開可否判定部
13 展開パラメタ決定部
14 展開プログラム作成部
20 記憶装置
21 ソースプログラム
22 展開済みプログラム(最適化ソースプログラム)
10 Loop unrolling device (information processing device, information processing resource)
11 Program input unit 12 Expandability judgment unit 13 Deployment parameter determination unit 14 Deployment program creation unit 20 Storage device 21 Source program 22 Expanded program (optimized source program)

Claims (9)

変換対象とするソースプログラムを受け付けるプログラム入力部と、
前記プログラム入力部に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定部と、
前記展開可否判定部が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定部と、
前記展開パラメタ決定部が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成部と、
を含み成るソースプログラム変換システム。
A program input section that accepts the source program to be converted,
Expandability determination unit that identifies each loop included in the source program input to the program input unit, analyzes the data dependency related to expansion for each loop, and determines whether or not each loop can be expanded. When,
With respect to the loop determined to be expandable by the expansion possibility determination unit, the number of loop expansion stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated in the loop after expansion, and the number of loop expansion stages before expansion. An expansion parameter determination unit that derives the loop expansion width, which is a positive integer indicating how many rotations of the loop the loop is calculated in one rotation of the loop after expansion.
An expansion program creation unit that receives the number of loop expansion stages and the loop expansion width determined by the expansion parameter determination unit, generates and processes a program having an expanded loop, and outputs it as an expanded program.
A source program conversion system that includes.
前記請求項1に記載のソースプログラム変換システムにおいて、
前記プログラム入力部は、ベクトル計算機で用いるソースプログラムを受け付け、
前記展開プログラム作成部は、前記展開パラメタ決定部によって決定された、ループ展開段数とループ展開幅に基づいて、前記ベクトル計算機向けに展開したループを有するプログラムを生成処理して、前記展開済みプログラムを出力する
請求項1記載のソースプログラム変換システム。
In the source program conversion system according to claim 1,
The program input unit receives the source program used in the vector computer and receives it.
The expansion program creation unit generates and processes a program having a loop expanded for the vector computer based on the number of loop expansion stages and the loop expansion width determined by the expansion parameter determination unit, and produces the expanded program. The source program conversion system according to claim 1 for output.
前記請求項1又は2に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの中の展開するループの中の、計算回数 および メモリアクセス回数 の少なくとも一方に基づいて、ループ処理コスト(C)を算出し、所定の閾値(Cmin)を用いて、Cmin ≦ C×N を満たす最小の整数Nを、ループ展開段数に決定するソースプログラム変換システム。
In the source program conversion system according to claim 1 or 2.
The expansion parameter determination unit calculates the loop processing cost (C) based on at least one of the number of calculations and the number of memory accesses in the loop to be expanded in the received source program, and calculates a predetermined threshold value (Cmin). ) Is used to determine the smallest integer N satisfying Cmin ≤ C × N as the number of loop unrolling stages.
前記請求項1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、受け付けた前記ソースプログラムの展開するループのループ回転数を計算し、決定したループ展開段数を参照して、ループ展開幅に、(ソースプログラムのループ回転数÷ループ展開段数)以下となる正整数を設定するソースプログラム変換システム。
In the source program conversion system according to any one of claims 1 to 3,
The expansion parameter determination unit calculates the loop rotation speed of the loop developed by the source program that has been received, refers to the determined loop expansion stage number, and sets the loop expansion width as (the loop rotation speed of the source program ÷ the loop expansion stage number). ) A source program conversion system that sets the following positive integers.
前記請求項1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、ループ展開幅に、展開済みプログラムを実行するベクトル計算機のベクトル長を設定するソースプログラム変換システム。
In the source program conversion system according to any one of claims 1 to 3,
The expansion parameter determination unit is a source program conversion system that sets the vector length of the vector computer that executes the expanded program in the loop expansion width.
前記請求項1から3の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開パラメタ決定部は、前記ソースプログラムを実行させるベクトル計算機のベクトル長 又は 機種 が前記ソースコード中に記載されているか判別し、ベクトル長 又は 機種 が記載されていた場合、該記載されていたベクトル長 又は 機種から定まるベクトル長 を識別して、ループ展開幅に識別したベクトル長を設定するソースプログラム変換システム。
In the source program conversion system according to any one of claims 1 to 3,
The expansion parameter determination unit determines whether the vector length or model of the vector computer that executes the source program is described in the source code, and if the vector length or model is described, the described vector. A source program conversion system that identifies the vector length determined by the length or model and sets the identified vector length in the loop expansion width.
前記請求項1から6の何れか一項に記載のソースプログラム変換システムにおいて、
前記展開プログラム作成部は、外側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、前記ループ展開幅と前記ループ展開段数の積ずつ増加し、ソースプログラムのループの回転数と前記積の値の差以下であるまでループし、内側ループが、カウンタ変数が、初期値0から、ループ1回転ごとに、ソースプログラムのループのカウンタ変数のループ1回転ごとの増加値ずつ増加し、前記ループ展開幅より小さい間ループするような、2重ループを作成し、
当該2重ループの中に、ソースプログラムのループ中の計算式を、前記ループ展開段数分展開する
ソースプログラム変換システム。
In the source program conversion system according to any one of claims 1 to 6.
In the expansion program creation unit, the outer loop increases the counter variable from the initial value 0 by the product of the loop expansion width and the number of loop expansion stages for each loop rotation, and the number of rotations of the loop of the source program and the said. The loop is looped until it is less than or equal to the difference between the product values, and the inner loop increases the counter variable from the initial value of 0 by the increase value of the counter variable of the source program loop for each loop rotation. Create a double loop that loops for less than the loop expansion width.
A source program conversion system that expands the calculation formula in the loop of the source program in the double loop by the number of loop unrolling stages.
変換対象とするソースプログラムを受け付け、
前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定し、
展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数を導出処理すると共に、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理し、
導出したループ展開段数とループ展開幅に基づいて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する
情報処理システムによるソースプログラム変換方法。
Accept the source program to be converted,
Each loop included in the source program is identified, the data dependency related to expansion is analyzed for each loop, and whether or not each loop can be expanded is determined.
For the loop determined to be expandable, in the loop after expansion, the number of loop expansion stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated, is derived, and what is in the loop before expansion. The loop unrolling width, which is a positive integer indicating whether to calculate the loop unrolled loop in one rotation of the loop after expansion, is derived.
A source program conversion method by an information processing system that generates and processes a program having expanded loops based on the number of derived loop unrolling stages and the loop unrolling width, and outputs it as an expanded program.
情報処理リソースを、
変換対象とするソースプログラムを受け付けるプログラム入力手段と、
前記プログラム入力手段に入力された前記ソースプログラムに含まれる各ループを識別し、各ループに対して展開に関連するデータ依存関係を解析して、各ループの展開の可否を判定する展開可否判定手段と、
前記展開可否判定手段が展開可と判定したループについて、展開後のループにて、展開前のループの何回転分の計算処理をするかを示す正整数であるループ展開段数、および、展開前のループの何回転とびのループの計算処理を、展開後のループ一回転において計算するかを示す正整数であるループ展開幅を導出処理する展開パラメタ決定手段と、
前記展開パラメタ決定手段が決定した、ループ展開段数とループ展開幅を受けて、展開したループを有するプログラムを生成処理して、展開済みプログラムとして出力する展開プログラム作成手段、
として動作させるソースプログラム変換プログラム。
Information processing resources,
Program input means that accepts the source program to be converted,
Expansion propriety determination means for identifying each loop included in the source program input to the program input means, analyzing the data dependency related to expansion for each loop, and determining whether or not each loop can be expanded. When,
With respect to the loop determined to be expandable by the expansion possibility determination means, the number of loop expansion stages, which is a positive integer indicating how many rotations of the loop before expansion are calculated in the loop after expansion, and the number of loop expansion stages before expansion. An expansion parameter determining means for deriving the loop expansion width, which is a positive integer indicating how many rotations of the loop the loop is calculated in one rotation of the loop after expansion.
An expansion program creating means that receives the number of loop expansion stages and the loop expansion width determined by the expansion parameter determining means, generates and processes a program having an expanded loop, and outputs it as an expanded program.
Source program conversion program that operates as.
JP2016198686A 2016-10-07 2016-10-07 Source program conversion system, source program conversion method, and source program conversion program Active JP6810380B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016198686A JP6810380B2 (en) 2016-10-07 2016-10-07 Source program conversion system, source program conversion method, and source program conversion program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016198686A JP6810380B2 (en) 2016-10-07 2016-10-07 Source program conversion system, source program conversion method, and source program conversion program

Publications (2)

Publication Number Publication Date
JP2018060432A JP2018060432A (en) 2018-04-12
JP6810380B2 true JP6810380B2 (en) 2021-01-06

Family

ID=61909986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016198686A Active JP6810380B2 (en) 2016-10-07 2016-10-07 Source program conversion system, source program conversion method, and source program conversion program

Country Status (1)

Country Link
JP (1) JP6810380B2 (en)

Also Published As

Publication number Publication date
JP2018060432A (en) 2018-04-12

Similar Documents

Publication Publication Date Title
US20140306964A1 (en) Incremental compiling of a declarative program
JP2010134614A (en) Paralleling processing method, system, and program
US10977031B2 (en) Method for a software development system
US9430203B2 (en) Information processing apparatus and compilation method
Kusmenko et al. Highly-Optimizing and Multi-Target Compiler for Embedded System Models: C++ Compiler Toolchain for the Component and Connector Language EmbeddedMontiArc
WO2020075532A1 (en) System transition support device, system transition support method, and program
US9218317B2 (en) Parallelization method, system, and program
JP6810380B2 (en) Source program conversion system, source program conversion method, and source program conversion program
Serbinowska et al. BehaVerify: verifying temporal logic specifications for behavior trees
Reger et al. Symmetry avoidance in MACE-style finite model finding
US20160170628A1 (en) Visual effects for scientific workflow editors
Vinkhuijzen et al. Symbolic model checking with sentential decision diagrams
Wang et al. Gridfor: A domain specific language for parallel grid-based applications
Sridhar et al. Slicing matlab simulink/stateflow models
US20210034333A1 (en) Boolean multi-flow programming
JP5277825B2 (en) Program obfuscation device and obfuscation program
Pham et al. Unfolding-based dynamic partial order reduction of asynchronous distributed programs
WO2018150588A1 (en) Information processing device, information processing method, and information processing program
JP2015035174A (en) Control program division device, control program division method, and recording medium therefor
US10572233B2 (en) Vectorization device, vectorization method, and recording medium on which vectorization program is stored
EP4220500A1 (en) Data modification program, data modification method, and information processing apparatus
Oleynik et al. Recent advances in Periscope for performance analysis and tuning
Sun et al. Model-based testing of web service with EFSM
JP2007066128A (en) Compilation processing method, compilation processor and compilation processing program
Toda et al. Parallel, distributed, and differential processing system for human activity sensing flows

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201124

R150 Certificate of patent or registration of utility model

Ref document number: 6810380

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150