WO2007096935A1 - プログラム解析方法、プログラム解析装置およびプログラム解析プログラム - Google Patents
プログラム解析方法、プログラム解析装置およびプログラム解析プログラム Download PDFInfo
- Publication number
- WO2007096935A1 WO2007096935A1 PCT/JP2006/302955 JP2006302955W WO2007096935A1 WO 2007096935 A1 WO2007096935 A1 WO 2007096935A1 JP 2006302955 W JP2006302955 W JP 2006302955W WO 2007096935 A1 WO2007096935 A1 WO 2007096935A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- program
- graph
- reduced
- vertex
- dependency
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 37
- 230000007850 degeneration Effects 0.000 claims abstract description 21
- 230000001419 dependent effect Effects 0.000 claims abstract description 21
- 230000002441 reversible effect Effects 0.000 claims abstract description 5
- 230000009467 reduction Effects 0.000 claims description 2
- 238000005457 optimization Methods 0.000 abstract description 12
- 238000004364 calculation method Methods 0.000 abstract description 7
- 239000002245 particle Substances 0.000 abstract 1
- 230000006870 function Effects 0.000 description 18
- 230000008878 coupling Effects 0.000 description 9
- 238000010168 coupling process Methods 0.000 description 9
- 238000005859 coupling reaction Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 235000013339 cereals Nutrition 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Definitions
- Program analysis method Program analysis method, program analysis apparatus, and program analysis program
- the present invention relates to a technique for optimizing a large-scale program.
- the processing capability of a processor is improved by increasing the operating frequency of the processor, or improved by executing instructions in parallel.
- the power consumption of the processor increases as the operating frequency increases.
- the structure of the element needs to be made fine in order to increase the operating frequency. Improvements in processor processing power have come to a limit due to power consumption problems and physical limitations due to miniaturization of elements.
- Non-Patent Document 1 the number of instructions that a processor can process in parallel is about 2_4. It is known that there is a limit to the ability to improve parallelism somewhat by introducing techniques such as speculative execution of processing. By parallelizing the program at a granularity greater than the instruction level and executing it on multiple processors, the execution efficiency of the program is improved, and the above-mentioned processor capacity problem is alleviated.
- Patent Document 1 proposes a method for extracting parallelism latent in a program from a sequential program.
- data and control dependency relationships between program sentences are extracted, and a program dependency graph is generated based on the dependency relationships.
- the program dependency graph is a graph that expresses the meaning of a program by vertices that express sentences and edges that express control dependency relationships and data dependency relationships.
- the program dependence graph has the feature that optimization beyond the flow of control can be expected in order to handle the dependency relation of control.
- the program dependency graph expresses data dependency and control dependency, and is therefore easy to optimize.
- Non-Patent Documents 2 and 3 describe that a program dependence graph can express the meaning of a program.
- Non-Patent Document 2 proves that two programs are semantically equivalent if their program-dependent graphs are isomorphic.
- Non-Patent Documents 4 and 5 describe technologies related to program dependence graphs.
- Patent Document 1 Japanese Unexamined Patent Application Publication No. 2002-116916
- Non-Patent Literature l Ferrante, J., Ottenstein, KJ, Warren, JE (IBM, Michigan Tec, Rice U.): The program dependence graph and its use in optimization, ACM TOPLAS, Vol. 9, No. 3, pp. 319-349 (Jul. 1987).
- Non-Patent Document 2 S. Horwitz, J. Prins, and T. Reps: On the Adequacy of Program Depenceence Graphs for Representing Programs, 15th POPL, pp. 146-157, 1988
- Non-Patent Document 3 S. Horwitz, J Prins, and T. Reps: Integrating non-interfering versions of programs, ACM Transactions on Programming Languages and Systems, vol. 11, no. 3, pp. 345-387, 1989.
- Non-Patent Document 4 A.V. Eiho, R. Cessie, J.D. Ullman: Compiler II-Principle 'Technology' Monore, .736, Science, 1990
- Non-specific 3 PM HX5 N. Kas janov. Distinguishing hammocks in a directed graph, oviet Math. Doklady, 16 (5): 448_450, 1975.
- Non-Patent Document 6 T. Ball, and S. Horwiz: Constructing Control Flow From Control Dep endence, R—92—1091, Computer sciences Department, University of Wisconsin-Mad ison, June 1992.
- the program dependence graph is a graph having a sentence or an assignment expression as a vertex. For example, when several procedures are targeted, the number of vertices is about several tens, and analysis using a program-dependent dialog is possible. However, in large-scale software, if the top is a sentence or an assignment expression, the number of vertices in the graph will be in the thousands or tens of thousands. In general, it is known that a program optimization problem using a program dependence graph is an exponential function of the scale of the graph. For this reason, in the conventional program dependence graph extracted in units of sentences, it is difficult to extract parallelism overlooking the entire program within realistic resources and time. It is difficult.
- An object of the present invention is to realize analysis and optimization of large-scale software in a realistic time by generating a degenerate program dependence graph having reversibility.
- a dependency element group that can be reversibly degenerated is obtained using program analysis information that is composed of a plurality of dependency elements that represent program sentence and control dependency relationships.
- a program dependence graph in which the dependency elements are reduced is generated by reducing the obtained dependency element group.
- a hammock is searched for a dependency element that cannot be reduced, and a reduced program dependence graph is generated by reducing the searched hammock.
- a degenerate program dependency graph is generated by searching for a degenerate vertex set in the abstract syntax tree representation and degenerating the vertex set on the program dependency graph corresponding to the searched vertex set.
- the degenerate vertex set in the abstract syntax tree representation is reduced, and a reduced program dependence graph is generated using the vertex set including the reduced vertex.
- the program dependence graph is used as the program analysis information, and the vertex set exceeding the predetermined coupling degree is obtained in the program dependence graph.
- a degenerate program dependence graph is generated using the vertex set it contains.
- a control flow graph is generated by reconfiguring a control flow in a reduced program dependence graph.
- a sentence level control flow graph is generated from the reduced control flow graph.
- the program code is generated, such as sentence level control flow graph power.
- FIG. 1 is a block diagram showing a first embodiment of the present invention.
- FIG. 2 is a flowchart showing an outline of a processing flow of an analysis program executed by the program analysis apparatus shown in FIG.
- FIG. 3 is a flowchart showing details of step S200 shown in FIG.
- FIG. 4 is a flowchart showing details of the processing shown in FIG.
- FIG. 5 is a flowchart showing details of step S400 shown in FIG.
- FIG. 6 is an explanatory diagram showing an example of degenerating a program dependence graph in the first embodiment.
- FIG. 7 is a flowchart showing a second embodiment of the present invention.
- FIG. 8 is a flowchart showing a third embodiment of the present invention.
- FIG. 9 is an explanatory diagram showing an algorithm of step S260 in FIG.
- FIG. 10 is a flowchart showing a fourth embodiment of the present invention.
- FIG. 11 is an explanatory diagram showing an example of degenerating a program dependence graph in the fourth embodiment.
- FIG. 12 is a flowchart showing a fifth embodiment of the present invention.
- FIG. 1 shows a first embodiment of the present invention.
- the program analysis apparatus 100 includes a memory device MEM that stores a program analysis program and the like, and a processor CPU that executes the program analysis program.
- the program analysis apparatus 100 is, for example, a personal It consists of a computer or a workstation.
- the memory device MEM is, for example, a hard disk drive device.
- Connected to the program analysis apparatus 100 are a display DISP, an input device INPUT such as a keyboard and a mouse, and a disk drive DRV.
- the display DISP displays information input from the input device INPUT and the disk drive DRV, the execution result of the program analysis program, and the like.
- the disc drive DRV is set with a program analysis program and a recording medium such as a CD_ROM or DVD in which the sequential program to be analyzed is recorded.
- the program analysis program and the sequential program to be analyzed are downloaded to the memory device MEM via the disk drive device DRV.
- a silicon disk such as a memory card storing a program analysis program or the like, or a hard disk drive device may be connected to the program analysis device 100.
- the program analysis method of the present invention is realized by the processor CPU executing the program analysis program.
- FIG. 2 shows an overview of the processing flow of the program analysis program executed by the program analysis apparatus 100 (processor CPU) shown in FIG.
- step S100 the sequential program read into the memory device MEM is analyzed, and the dependency relationship is extracted. As a result, program analysis information such as the program dependence graph PDG is generated. Program analysis information consists of multiple dependency elements that represent dependency relationships between program statements and controls.
- the processing in step S100 is the same as the processing for generating the conventional program dependence graph PDG.
- step S200 in order to reduce the number of vertices and the number of edges of the program dependence graph, the dependence elements (dependency relations) of the program dependence graph PDG are degenerated and the vertices are merged. At this time, in order to generate a correct program code from the reduced program dependence graph, only the dependency elements that can be reversibly reduced are reduced. Then, a degenerate program dependence graph PDG having a coarse granularity is created.
- step S300 the degenerated program dependence graph PDG is optimized.
- optimization for example, by changing the shape of the graph, vertices from different viewpoints Whether or not can be fused is considered. Optimization is done to reduce the number of codes. Alternatively, optimization is performed for the purpose of improving the processing speed by reducing the number of steps and improving parallelism. Then, steps S200 and S300 are repeatedly executed until the optimization is satisfied, and a reduced program dependence graph PDG is generated. The scale of Daraf is reduced from 1/10 to 1/100 of the original graph due to degeneration.
- step S400 a reduced program dependence graph PDG force, and other program codes are generated.
- multiple program codes that can be processed in parallel are generated from the program dependence graph PDG. That is, an optimized program is generated. Since the scale of the graph is becoming smaller due to degeneracy, the amount of calculation for extracting the parallelism of the program is significantly smaller than before. As a result, the program can be optimized in a realistic time.
- FIG. 3 shows details of step S200 shown in FIG.
- step S500A it is determined whether the degeneration is sufficient. If the degeneration is insufficient, the process proceeds to step S500. If the degeneration is sufficient, the process ends and a degenerate program dependence graph PDG is generated.
- step S500 the dependency element (dependency) to be degenerated is specified.
- step S600 it is determined whether or not the identified dependency element can be degenerated.
- the processor CPU that executes steps S500A, S500, and S600 creates a reversible group of dependencies that can be reversibly degenerated using program analysis information that consists of multiple dependency elements that represent program statements and control dependencies. Functions as the desired degeneration determination unit.
- step S700 only the dependent elements determined to be degenerate are degenerated, and the process returns to step S500A.
- the processor CPU that executes step S 700 functions as a graph generation unit that generates a reduced program dependence graph P DG by reducing a dependency element group that is determined to be possible to be reduced.
- the program code is generated using the degenerated program dependence graph PDG. For this reason, it is necessary to verify in advance that the correct program code can be generated from the degenerated program dependence graph PDG, that is, reversibility. This verification is performed in steps S500 and S600. In other words, steps S500 and S600 guarantee the reversibility of the reduced program dependence graph PDG and the original program dependence graph PDG. In other words, the equivalence between the original sequential program and the sequential program generated from the reduced program dependence graph PDG is guaranteed by finding the reversible group of dependency elements.
- Non-Patent Document 6 when the following two conditions (1) and (2) are satisfied on the control flow graph CFG described later, the control flow is safely reconfigured from the program dependence graph of the program. It is known that it can do S (has reversibility).
- any vertex w in the loop does not post-dominant vertex V.
- Vertex set Vx on the program dependence graph PDG and vertices belonging to the vertex set Vx form a hammock H on the corresponding control flow graph CFG.
- the original program satisfies the above condition (1) or condition (2). If it is a short program or partial program, seek an appropriate hammock and degenerate. Information about the control flow of the degenerated partial program is saved as additional information and used when generating program code.
- the vertices are subject to the formation of a hammock H on the control flow graph CFG (can be reduced).
- the hammock H is a subgraph satisfying the following conditions (3) to (5) in the directed graph G (Non-patent Document 1, Non-patent Document 5). How to find a hammock is clarified in Non-Patent Document 5.
- FIG. 4 shows details of the processing shown in FIG.
- a sentence level control flow graph CFG and a sentence level program dependence graph PDG are input as program analysis information.
- Steps S510 and S512 are processes corresponding to step S500A in FIG.
- Steps S610, S614, S710, and S712f are the processes corresponding to step S50CH in FIG. It is obvious that the vertex set can be degenerated because a hammock is requested in step S710. For this reason, the process corresponding to step S600 in FIG. 3 is omitted.
- Steps S711 and S713f up to step S700 in FIG. 3 this is the corresponding process.
- steps S510, S610, S710, and S711 the degeneration process corresponding to the above-described condition (1) is performed.
- the processor CPU that executes S510, S512, S610, S710, and S711 functions as a degenerate half IJ constant.
- the processor CPU that executes S711 and S713 functions as a graph generation unit.
- steps S510 and S610 it is determined whether or not the condition (1) is satisfied for all reverse sides (v, w) in the control flow graph CFG. If the condition (1) is satisfied, the dependency elements (dependency) that can be reversibly reduced are identified and reduced. For the opposite side (v, w) that does not satisfy the condition (1), in step S710, the minimum hammock HGv including the vertices v, w (subgraph) is searched. In step S711, the set of vertices included in the hammock is reduced to one vertex with respect to the control flow graph CFG and the program dependence graph PDG, and the process returns to step S510.
- steps S512 and S614 it is determined whether or not the condition (2) is satisfied for all branch vertices V in the control flow graph CFG.
- a dependency element (dependency) that can be reversibly reduced is identified and reduced.
- a minimum hammock HGv including a natural loop having the vertex V as an entry is searched for in step S712.
- step S713 the collective power of vertices included in the hammock is reduced to one vertex for the control flow graph CFG and the program dependence graph PDG, and the process returns to step S512.
- the scale of the degenerated program dependence graph PDG can be 1 / 10-1 / 100 that of the original program dependence graph PDG.
- the number of vertices is about 6000 compared to the number of program lines.
- the number of vertices is about 60, which is two orders of magnitude less, it is possible to change the problem of constant 6000 to a problem of constant 100.
- a problem that is difficult to obtain in a realistic time can be changed to a problem that can be solved if the time is small.
- FIG. 5 shows details of step S400 shown in FIG.
- step S410 the control flow is reconfigured and a degenerated control flow graph CFG is generated.
- the reduced program dependence graph PDG satisfies the above conditions (1) and (2), so that the control flow can be safely reconfigured. That is, it has reversibility.
- the processor CPU that executes step S410 functions as a reconfiguration unit that reconfigures the control flow in the degenerated program dependence graph PDG.
- step S420 for the reduced vertex set, the flow of control of the reduced vertices is developed using the flow of control between vertices saved during the processing of FIG. This gives a sentence level control flow graph CFG.
- the processor CPU that executes step S420 functions as a control flow graph generation unit that generates a reduced control flow graph CFG and generates a sentence level control flow graph CFG from the reduced control flow graph.
- step S430 an appropriate program language (program code) is output, and an optimized sequential program is obtained.
- the processor CPU that executes step S430 functions as a code generator that generates a CFG program code at the sentence level.
- FIG. 6 shows an example in which the program dependence graph PDG is degenerated in the first embodiment.
- the four steps shown underlined in the program in the figure are reduced.
- the dependency elements (dependency relations) of the program dependence graph PDG are degenerated and the vertices are merged to obtain coarse grain Create a program dependence graph PDG
- FIG. 7 shows a second embodiment of the present invention.
- the program dependence graph PDG is degenerated based on the abstract syntax tree.
- an abstract syntax tree representation AST Abstract Syntax Tree
- a sentence-level program dependency graph PDG are input.
- the processing executed by the program analysis device is the same as that of the first embodiment except for the processing of step S200 shown in FIG. Specifically, the processing shown in FIG. 7 is performed instead of the processing shown in FIG.
- Step S520 is processing corresponding to step S500 in FIG.
- Step S720 is the processing corresponding to step S700 in FIG.
- the processor CPU that executes step S520 functions as a degeneration determination unit.
- the processor CPU that executes step S720 functions as a graph generation unit.
- Other configurations and processes are the same as those in FIGS.
- step S520 the syntax tree of the abstract syntax tree representation AST is searched with depth priority, and the set V of vertex sets Vb that can be reversibly reduced is extracted.
- step S720 the corresponding vertex set on the program dependence graph PDG is searched for each element Vb of the set V, and the vertex force included in these sets is reduced to one vertex. In other words, a degenerate program dependence graph PDG is generated.
- FIG. 8 shows a third embodiment of the present invention.
- the same elements as those described in the first and second embodiments are denoted by the same reference numerals, and detailed description thereof will be omitted. Description is omitted.
- the processing executed by the program analysis device is the same as that of the first embodiment except for the processing of step S200 shown in FIG. Specifically, the processing shown in FIG. 8 is performed instead of the processing shown in FIG.
- Step S530 is processing corresponding to step S500 in FIG.
- Steps S730 and S732 are processes corresponding to step S700 in FIG.
- Step S630 is processing corresponding to step S500A in FIG.
- the processor CPU that executes steps S530 and S630 functions as a degeneration determination unit.
- the processor CPU that executes steps S730 and S732 functions as a graph generation unit.
- Other configurations and processes are the same as those in Figs.
- step S 530 similar to step S 520 in FIG. 7, the syntax tree of the abstract syntax tree representation AST is searched with depth priority, and the set V of vertex sets Vb that can be reversibly reduced is extracted. Is issued.
- step S730 the vertex set Vb is reduced to one vertex on the abstract syntax tree. If the search is not completed in step S630, steps S530 and S730 are repeated. When the search is completed, a reduced program dependence graph PDG is generated in step S732 as in step S700 shown in FIG.
- FIG. 9 shows the algorithm of step S260 of FIG.
- the algorithm for finding a vertex set that can be reversibly reduced from the abstract syntax tree representation can be expressed as shown in Fig. 9.
- the C language syntax is not a switch statement, do-while statement, break statement, goto statement, or the end of a function.
- condition (1) and condition (2) can be satisfied by reducing the whole sentence to one vertex (Process 1).
- condition (1) and condition (2) can be satisfied by reducing the immediate parent for statement or the entire while statement to one vertex (processing) 2).
- FIG. 10 shows a fourth embodiment of the present invention.
- the same elements as those described in the first embodiment are denoted by the same reference numerals, and detailed description thereof will be omitted.
- This embodiment shows a basic principle for degenerating the program dependence graph PDG based on the program dependence graph PDG.
- the processing performed by the program analysis device is the same as that of the first embodiment except for the processing of step S200 shown in FIG.
- the process shown in FIG. 10 is performed instead of the process shown in FIG.
- Step S540 is a process corresponding to step S500A in FIG.
- Steps S542 and S544 are processes corresponding to step S500 in FIG.
- Step S640 is processing corresponding to step S600 in FIG.
- Step S740 is processing corresponding to step S700 in FIG.
- the processor CPU that executes steps S540, S542, S544, and S640 functions as a degenerate half U constant.
- the processor CPU that executes step S740 functions as a graph generation unit.
- step S542 the strength of the connection between vertices in the program dependence graph PDG is obtained based on the inputted sentence level program dependence graph PDG.
- the degree of connectivity (dependent element) is calculated from the data-dependent edge and its size, the control-dependent edge, and the processing size.
- step S544 it is determined whether or not the degree of coupling between vertices exceeds a predetermined degree of coupling X set in advance.
- step S640 it is determined whether or not the dependency relationship of vertices with a degree of coupling exceeding X can be degenerated. If degeneration is possible, in step S740, the vertices are combined and the dependency is degenerated.
- satisfying the following two conditions (6) and (7) is a condition that can be reversibly degenerated.
- FIG. 11 shows an example in which the program dependence graph PDG is degenerated in the fourth embodiment.
- the two steps shown underlined in the program in the figure are reduced.
- FIG. 12 shows a fifth embodiment of the present invention.
- the same elements as those described in the first and fourth embodiments are denoted by the same reference numerals, and detailed description thereof will be omitted.
- This embodiment more specifically shows the fourth embodiment, and this program dependence graph PDG is degenerated based on the program dependence graph PDG.
- the processing performed by the program analysis device is the same as that of the first embodiment except for the processing of step S200 shown in FIG. Specifically, the processing shown in FIG. 12 is performed instead of the processing shown in FIG.
- Step S560 is a process corresponding to step S500A in FIG.
- Steps S562, S564, S566, S568, S569i are the processes corresponding to step S500 in FIG.
- Step S750 is processing corresponding to step S600 and step S700 in FIG.
- Step S752 is processing corresponding to step S700 in FIG.
- Steps S560, S562, S564, S566, S568, and the processor CPU that executes S569 function as a degeneration determination unit.
- the processor CPU that executes steps S750 and S752 functions as a dialog generator.
- Other configurations and processes are the same as those in FIGS.
- the program dependence graph PDG satisfying the above conditions (1) and (2) for reconfiguring the control flow uses a rule when the control dependence subgraph of the PDG has a tree structure.
- Program dependence graph PDG is degenerated. Further, in order to be able to reversibly degenerate, it is necessary to satisfy the above conditions (6) and (7).
- step S560 the process shown in FIG. 12 is executed in order of the control dependence subgraph of the program dependence graph PDG. It is carried out by doing.
- step S562 it is determined whether or not the vertex Vx is at the leaf (the end of the tree structure). If the vertex Vx is in the leaf, in step S564, the degree of connectivity between the vertices is obtained for the vertex VX in the leaf. If the vertex Vx is not in the leaf, that is, if the vertex Vx is in the middle of the tree structure, in step S750, child vertices satisfying the condition (7) for increasing the coupling degree are coupled and degenerated.
- step S566 the degree of connection between the vertex Vx and the child vertex (the degree of connection between the parent and child) is obtained. If the degree of coupling is high, in step S752, the control-dependent subtree below the vertex Vx is reduced to the vertex. Next, in step S568, the degree of coupling is obtained for the vertex Vx after degeneration. If the degree of coupling is low, in step S 569, degrees of coupling between the subtrees below the vertex Vx and vertices other than the subtree are accumulated at the vertex Vx. This makes it possible to search for vertex sets to be combined within the range that satisfies the above condition (6). When all the searches are completed, the program dependence graph PDG is output. As described above, also in the fifth embodiment, the same effect as in the first and fourth embodiments described above can be obtained.
- the processor CPU executes the program analysis program to generate a degenerated program dependence graph PDG, and the sequential processing optimized based on the program dependence graph PDG.
- An example of generating a program was described.
- the invention is not limited to the powerful embodiments.
- the above-described reduction determination unit, graph generation unit, reconstruction unit, control flow graph generation unit, and code generation unit may be realized by hardware.
- the present invention can be applied to a program dependency graph generation method used for optimizing a large-scale program.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
プログラムの文および制御の依存関係を表す複数の依存要素で構成されるプログラム解析情報を用いて、可逆的に縮退可能な依存要素群が求められる。次に、求められた依存要素群を縮退することで依存要素が縮退されたプログラム依存グラフが生成される。依存要素の縮退により、プログラム依存グラフの頂点の数および辺の数を減らすことで、粗い粒度を有するプログラム依存グラフを生成できる。この結果、プログラムの並列化処理等の最適化処理に必要な計算量(計算時間)を削減できる。すなわち、可逆性を有する縮退されたプログラム依存グラフを生成することにより、大規模ソフトウエアの解析および最適化を現実的な時間で実現できる。
Description
明 細 書
プログラム解析方法、プログラム解析装置およびプログラム解析プロダラ ム
技術分野
[0001] 本発明は、大規模なプログラムの最適化技術に関する。
背景技術
[0002] 一般に、プロセッサの処理能力は、プロセッサの動作周波数を高くすることで向上 し、あるいは命令を並列に実行することで向上する。しかし、プロセッサの消費電力は 、動作周波数の増加とともに増加する。また、素子の構造は、動作周波数を上げるた めに微細にする必要がある。プロセッサの処理能力の向上は、消費電力の問題と素 子の微細化による物理的な限界の問題とにより頭打ちになつてきてレ、る。
[0003] 非特許文献 1によれば、プロセッサが並列に処理できる命令の数は、 2 _4程度で ある。処理を投機的に実行するなどの手法を導入することで、並列性を多少向上でき る力 それにも限度があることが知られている。プログラムを、命令レベルより大きな粒 度で並列化し、複数のプロセッサで実行することにより、プログラムの実行効率は向 上し、上述したプロセッサの処理能力の問題は緩和される。
[0004] 例えば、特許文献 1では、プログラムに潜在する並列性を逐次プログラムから抽出 する方法が提案されている。この方法では、プログラムの各文間のデータおよび制御 の依存関係が抽出され、依存関係に基づいてプログラム依存グラフが生成される。プ ログラム依存グラフは、プログラムの意味を、文を表現する頂点と、制御の依存関係 およびデータ依存関係を表現する辺とで表したグラフである。プログラム依存グラフ は、制御の依存関係を扱うため、制御の流れを越える最適化が見込めるという特徴を 持つ。また、プログラム依存グラフは、データの依存関係と制御の依存関係を表現し ているため、最適化しやすいという特徴を持つ。
[0005] 非特許文献 2、 3には、プログラム依存グラフがプログラムの意味を表現できることが 記載されている。非特許文献 2は、 2つのプログラムに対して、そのプログラム依存グ ラフが同形の場合、プログラムが意味的に等価であることを証明している。非特許文
献 3では、ある制約条件下にあるプログラム依存グラフから意味的に等価な制御フロ 一グラフを作成する技術が明らかにされている。非特許文献 4、 5には、プログラム依 存グラフに関する技術が記載されている。
特許文献 1 :特開 2002— 116916号公報
非特許文献 l : Ferrante, J., Ottenstein, K. J., Warren, J. E. (IBM, Michigan Tec, Ri ce U.): The program dependence graph and its use in optimization, ACM TOPLAS, Vol. 9, No. 3, pp. 319-349 (Jul. 1987).
非特許文献 2 : S. Horwitz, J. Prins, and T. Reps: On the Adequacy of Program Depe ndence Graphs for Representing Programs, 15th POPL, pp. 146 - 157, 1988 非特許文献 3 : S. Horwitz, J. Prins, and T. Reps: Integrating non-interfering versions of programs, ACM Transactions on Programming Languages and Systems, vol. 11, no. 3, pp. 345-387, 1989.
非特許文献 4 : A.V.エイホ, R.セシィ, J.D.ウルマン著:コンパイラ II -原理 '技法'ッ 一ノレ-, .736,サイエンス社, 1990
非特 3午文 HX5 : N. Kas janov. Distinguishing hammocks in a directed graph, oviet M ath. Doklady, 16(5):448_450, 1975.
非特許文献 6 : T. Ball, and S. Horwiz: Constructing Control Flow From Control Dep endence, R—92—1091, Computer sciences Department, University of Wisconsin-Mad ison, June 1992.
発明の開示
発明が解決しょうとする課題
プログラム依存グラフは、文または代入式を頂点としたグラフとなっている。例えば、 数個の手続きなどを対象とする場合、頂点数は数十程度であり、プログラム依存ダラ フによる解析は可能である。しかし、大規模なソフトウェアでは、文または代入式を頂 点とする場合、グラフの頂点数が数千力 数万となってしまう。一般に、プログラム依 存グラフを用いたプログラムの最適化問題は、グラフの規模の指数関数となることが 知られている。そのため、文を単位として抽出された従来のプログラム依存グラフでは 、プログラム全体を俯瞰した並列性を、現実的なリソース、時間内で抽出することが困
難である。
[0007] さらに、プログラム依存グラフを縮退する場合には、縮退されたプログラム依存ダラ フから正しレ、プログラムコードが生成できなくてはならなレ、(可逆性を有する)。可逆性 が保証されてレ、なレ、プログラム依存グラフでは、プログラムを最適化することができな レ、。
本発明の目的は、可逆性を有する縮退されたプログラム依存グラフを生成すること により、大規模ソフトウェアの解析および最適化を現実的な時間で実現することであ る。
課題を解決するための手段
[0008] 本発明の一形態では、まず、プログラムの文および制御の依存関係を表す複数の 依存要素で構成されるプログラム解析情報を用いて、可逆的に縮退可能な依存要素 群が求められる。次に、求められた依存要素群を縮退することで依存要素が縮退さ れたプログラム依存グラフが生成される。依存要素の縮退により、プログラム依存ダラ フの頂点の数および辺の数を減らすことで、粗レ、粒度を有するプログラム依存グラフ を生成できる。この結果、プログラムの並列化処理等の最適化処理に必要な計算量( 計算時間)を削減できる。すなわち、可逆性を有する縮退されたプログラム依存ダラ フを生成することにより、大規模ソフトウェアの解析および最適化を現実的な時間で 実現できる。
[0009] 本発明の一形態における好ましい例では、縮退できない依存要素についてハンモ ックが探索され、探索されたハンモックを縮退することで縮退されたプログラム依存グ ラフが生成される。あるいは、抽象構文木表現における縮退可能な頂点集合を探索 し、探索された頂点集合に対応するプログラム依存グラフ上の頂点集合を縮退するこ とで縮退されたプログラム依存グラフが生成される。あるいは、抽象構文木表現にお ける縮退可能な頂点集合を縮退し、縮退した頂点を含む頂点集合を用いて縮退され たプログラム依存グラフが生成される。さらに、プログラム解析情報としてプログラム依 存グラフを用レ、、プログラム依存グラフにおいて所定の結合度を超える頂点集合を求 め、求めた頂点集合のうち縮退可能な頂点集合を縮退し、縮退した頂点を含む頂点 集合を用いて縮退されたプログラム依存グラフが生成される。
[0010] 本発明の一形態における好ましい例では、縮退されたプログラム依存グラフにおい て制御の流れを再構成されて、縮退された制御フローグラフが生成される。次に、縮 退された制御フローグラフから文レベルの制御フローグラフが生成される。そして、文 レベルの制御フローグラフ力、らプログラムコードが生成される。
発明の効果
[0011] 本発明では、可逆性を有する縮退されたプログラム依存グラフを生成することにより
、大規模ソフトウェアの解析および最適化を現実的な時間で実現できる。
図面の簡単な説明
[0012] [図 1]本発明の第 1の実施形態を示すブロック図である。
[図 2]図 1に示したプログラム解析装置により実行される解析プログラムの処理フロー の概要を示すフローチャートである。
[図 3]図 2に示したステップ S200の詳細を示すフローチャートである。
[図 4]図 3に示した処理の詳細を示すフローチャートである。
[図 5]図 2に示したステップ S400の詳細を示すフローチャートである。
[図 6]第 1の実施形態におけるプログラム依存グラフを縮退する例を示す説明図であ る。
[図 7]本発明の第 2の実施形態を示すフローチャートである。
[図 8]本発明の第 3の実施形態を示すフローチャートである。
[図 9]図 8のステップ S260のアルゴリズムを示す説明図である。
[図 10]本発明の第 4の実施形態を示すフローチャートである。
[図 11]第 4の実施形態におけるプログラム依存グラフを縮退する例を示す説明図であ る。
[図 12]本発明の第 5の実施形態を示すフローチャートである。
発明を実施するための最良の形態
[0013] 以下、本発明の実施形態を図面を用いて説明する。
図 1は、本発明の第 1の実施形態を示している。プログラム解析装置 100は、プログ ラム解析プログラム等を記憶するメモリ装置 MEM、プログラム解析プログラムを実行 するプロセッサ CPUを有している。プログラム解析装置 100は、例えば、パーソナル
コンピュータまたはワークステーション等により構成される。メモリ装置 MEMは、例え ば、ハードディスクドライブ装置である。プログラム解析装置 100には、ディスプレイ DI SP、キーボードやマウス等の入力デバイス INPUT、およびディスクドライブ装置 DR Vが接続されている。
[0014] ディスプレイ DISPは、入力デバイス INPUTおよびディスクドライブ装置 DRVから 入力された情報や、プログラム解析プログラムの実行結果等を表示する。ディスクドラ イブ装置 DRVには、プログラム解析プログラムや、解析される逐次プログラムが記録 された CD_ROM、 DVD等の記録媒体がセットされる。プログラム解析プログラムお よび解析される逐次プログラムは、ディスクドライブ装置 DRVを介してメモリ装置 ME Mにダウンロードされる。なお、ディスクドライブ装置 DRVの代わりに、プログラム解析 プログラム等を記憶したメモリカード等のシリコンディスクやハードディスクドライブ装 置が、プログラム解析装置 100に接続されてもよい。なお、本発明のプログラム解析 方法は、プロセッサ CPUがプログラム解析プログラムを実行することにより実現される
[0015] 図 2は、図 1に示したプログラム解析装置 100 (プロセッサ CPU)により実行されるプ ログラム解析プログラムの処理フローの概要を示している。
まず、ステップ S100において、メモリ装置 MEMに読み込まれた逐次プログラムが 解析され、依存関係が抽出される。これにより、プログラム依存グラフ PDG等のプログ ラム解析情報が生成される。プログラム解析情報は、プログラムの文および制御の依 存関係を表す複数の依存要素で構成される。ステップ S100の処理は、従来のプロ グラム依存グラフ PDGの生成処理と同じである。
[0016] 次に、ステップ S200において、プログラム依存グラフの頂点数および辺数を減らす ために、プログラム依存グラフ PDGの依存要素(依存関係)が縮退されて、頂点が融 合される。この際、縮退されたプログラム依存グラフから正しいプログラムコードを生 成するために、可逆的に縮退可能な依存要素のみが縮退される。そして、粗い粒度 を有する縮退されたプログラム依存グラフ PDGが作成される。
[0017] この後、ステップ S300において、縮退されたプログラム依存グラフ PDGの最適化 が実行される。最適化では、例えば、グラフの形を変形することで、違う観点から頂点
が融合できないかが検討される。最適化は、コード数を減らすことを目的として行わ れる。あるいは、最適化は、ステップ数を減らす、並列性の向上により処理速度を向 上することを目的として行われる。そして、最適化が満足されるまで、ステップ S200、 S300が繰り返し実行され、縮退されたプログラム依存グラフ PDGが生成される。ダラ フの規模は、縮退により元のグラフの 1/10から 1/100になる。
[0018] 次に、ステップ S400におレ、て、縮退されたプログラム依存グラフ PDG力、らプロダラ ムコードが生成される。例えば、プログラム依存グラフ PDGから並列処理が可能な複 数のプログラムコードが生成される。すなわち、最適化されたプログラムが生成される 。縮退によりグラフの規模が小さくなつているため、プログラムの並列性を抽出するた めの計算量は、従来に比べて大幅に少ない。この結果、現実的な時間にて、プログ ラムを最適ィ匕できる。
[0019] 図 3は、図 2に示したステップ S200の詳細を示している。まず、ステップ S500Aに おいて、十分に縮退されているかが判定される。縮退が不十分な場合、処理はステツ プ S500に進む。縮退が十分な場合、処理は終了し、縮退したプログラム依存グラフ PDGが生成される。次に、ステップ S500において、縮退すべき依存要素(依存関係 )が特定される。次に、ステップ S600において、特定した依存要素が縮退可能かどう かが判定される。ステップ S500A、 S500、 S600を実行するプロセッサ CPUは、プロ グラムの文および制御の依存関係を表す複数の依存要素で構成されるプログラム解 析情報を用いて、可逆的に縮退可能な依存関係群を求める縮退判定部として機能 する。次に、ステップ S700において、縮退可能と判定された依存要素のみが縮退さ れ、処理はステップ S500Aに戻る。ステップ S 700を実行するプロセッサ CPUは、縮 退可能と判定された依存要素群を縮退することで縮退されたプログラム依存グラフ P DGを生成するグラフ生成部として機能する。
[0020] 本発明では、プログラムコードは、縮退されたプログラム依存グラフ PDGを用いて 生成される。このため、縮退されたプログラム依存グラフ PDGから正しいプログラムコ ードが生成できることを、すなわち可逆性を、予め検証する必要がある。この検証を、 ステップ S500、 S600で行う。すなわち、ステップ S500、 S600により、縮退されたプ ログラム依存グラフ PDGと元のプログラム依存グラフ PDGとの可逆性が保証される。
換言すれば、可逆的に縮退可能な依存要素群を求めることで、元の逐次プログラム と、縮退されたプログラム依存グラフ PDGから生成された逐次プログラムとの等価性 が保証される。
[0021] 非特許文献 6より、後述する制御フローグラフ CFG上で次の 2つの条件(1)、(2)を 満足する場合、そのプログラムのプログラム依存グラフから制御の流れを安全に再構 成すること力 Sできる(可逆性を有する)ことが知られてレ、る。
(1)制御フローグラフにおける逆辺 (back-edge) e= (v, w)について、頂点 wが頂点 v を支酉己する (dominant)。
(2)頂点 Vをエントリとする自然なループ (非特許文献 4)について、ループ内のいずれ の頂点 wも頂点 Vを後支配 (post-dominant)しなレ、。
[0022] そこで、次の性質を満足する場合、頂点の集合 Vxの依存関係を縮退し 1つの頂点 vxとみなすことができる。
く性質 >:プログラム依存グラフ PDG上の頂点の集合 Vxであって、頂点の集合 Vx に属する頂点が、対応する制御フローグラフ CFG上でハンモック Hを形成する。 このように、本実施形態では、まず、縮退したプログラム依存グラフ PDGから適切な プログラムのコードを生成可能とするために、元のプログラムにおいて、上述した条件 (1)あるいは条件(2)を満足しなレ、部分プログラムにつレ、ては、適切なハンモックを 求め、縮退する。縮退した部分プログラムの制御の流れの情報は、付加情報として保 存し、プログラムコードを生成するときに利用する。さらに、プログラム依存グラフ PDG の規模を縮小するために、複数の頂点を 1つの頂点に縮退する場合、その頂点は制 御フローグラフ CFG上で、ハンモック Hを形成することを条件とする(縮退可能な条件
[0023] ここで、ハンモック Hとは、有向グラフ Gにおける次の条件(3) - (5)性質を満たす 部分グラフである(非特許文献 1、非特許文献 5)。ハンモックの求め方は、非特許文 献 5に明らかにされている。
(3)エントリ頂点とイクジット頂点を持つ。
(4)ハンモック H外の頂点 Vからハンモック H内の頂点 uを間の有向パスは必ずェント リ頂点を通る。
(5)ハンモック H内の頂点 uからハンモック外の頂点 wへの有向パスは必ずイクジット 頂点を通る。
[0024] 図 4は、図 3に示した処理の詳細を示している。この例では、プログラム解析情報と して、文レベルの制御フローグラフ CFGと文レベルのプログラム依存グラフ PDGが入 力される。ステップ S510、 S512は、図 3のステップ S500Aに対応する処理である。 ステップ S610、 S614、 S710、 S712fま、図 3のステップ S50CHこ対応する処理であ る。ステップ S710でハンモックを求めているため、頂点集合が縮退可能であることは 自明である。このため、図 3のステップ S600に対応する処理は省略されている。ステ ップ S711、 S713fま、図 3のステップ S700(こ対応する処理である。ステップ S510、 S 610、 S710、 S711では、上述した条件(1)に対応する縮退処理を行う。ステップ S5 12、 S614、 S712、 S713では、上述した条件(2)に対応する縮退処理を行う。ステ ップ S510、 S512、 S610、 S710、 S711を実行するプロセッサ CPUは、縮退半 IJ定 部として機能する。ステップ S711、 S713を実行するプロセッサ CPUは、グラフ生成 部として機能する。
[0025] まず、ステップ S510、 S610では、制御フローグラフ CFGにおける全ての逆辺(v、 w)について、上記条件(1)が満足するか否かが判定される。条件(1)を満足する場 合、可逆的に縮退可能な依存要素 (依存関係)が特定され、縮退される。条件(1)を 満足しない逆辺(v、 w)については、ステップ S710において、頂点 v、 w (部分グラフ) を含む最小ハンモック HGvが探索される。そして、ステップ S711において、制御フロ 一グラフ CFGおよびプログラム依存グラフ PDGに対して、ハンモックに含まれる頂点 の集合が、 1つの頂点に縮退され、処理はステップ S510に戻る。
[0026] 次に、ステップ S512、 S614では、制御フローグラフ CFGにおける全ての分岐頂点 Vについて、上記条件(2)が満足するか否かが判定される。条件(2)を満足する場合 、可逆的に縮退可能な依存要素 (依存関係)が特定され、縮退される。条件 (2)を満 足しない分岐頂点 Vについては、ステップ S712において、頂点 Vをエントリとする自然 なループを含む最小ハンモック HGvが探索される。そして、ステップ S713において 、制御フローグラフ CFGおよびプログラム依存グラフ PDGに対して、ハンモックに含 まれる頂点の集合力 1つの頂点に縮退され、処理はステップ S512に戻る。
[0027] 縮退されたプログラム依存グラフ PDGの規模は、元のプログラム依存グラフ PDGの 1/10— 1/100にすることが可能である。例えば、一般的な動画像圧縮ソフトウェア は、プログラムの行数より、頂点数が 6000程度になる。これを、頂点数が 2桁少ない 6 0程度に縮退することで、定数の 6000乗の問題を、定数の 100乗程度の問題に変え ること力 Sできる。すなわち、現実的な時間では解を得るのが困難な問題を、時間を多 少かければ解ける問題に変えることができる。
[0028] 図 5は、図 2に示したステップ S400の詳細を示している。まず、ステップ S410にお いて、制御の流れが再構成され、縮退された制御フローグラフ CFGが生成される。こ の際、縮退されたプログラム依存グラフ PDGは、上記の条件(1)および条件(2)を満 足するため、制御の流れを安全に再構成できる。すなわち、可逆性を有している。ス テツプ S410を実行するプロセッサ CPUは、縮退されたプログラム依存グラフ PDGに おいて制御の流れを再構成する再構成部として機能する。
[0029] 次に、ステップ S420において、縮退した頂点集合について、図 4の処理時に保存 された頂点間の制御の流れを用いて、縮退した頂点の制御の流れが展開される。こ れにより、文レベルの制御フローグラフ CFGが得られる。ステップ S420を実行するプ 口セッサ CPUは、縮退された制御フローグラフ CFGを生成し、縮退された制御フロー グラフから文レベルの制御フローグラフ CFGを生成する制御フローグラフ生成部とし て機能する。ステップ S430において、適切なプログラム言語(プログラムコード)が出 力され、最適化された逐次プログラムが得られる。ステップ S430を実行するプロセッ サ CPUは、文レベルの制御フローグラフ CFG力 プログラムコードを生成するコード 生成部として機能する。
[0030] 図 6は、第 1の実施形態においてプログラム依存グラフ PDGを縮退する例を示して いる。この例では、 do-while文の制御構造に着目し、図中のプログラム内に下線で示 した 4ステップが縮退される。
以上、第 1の実施形態では、プログラム依存グラフ PDGの規模 (頂点数および辺数 )を減らすために、プログラム依存グラフ PDGの依存要素(依存関係)を縮退して頂 点を融合し、粗粒度のプログラム依存グラフ PDGを作成する。これにより、縮退され たプログラム依存グラフ PDGの規模を元のプログラム依存グラフ PDGに比べて大幅
に小さくすることが可能になる。したがって、プログラムの並列化処理等の最適化に 必要な計算量 (計算時間)を削減できる。すなわち、大規模ソフトウェアの解析および 最適化を現実的な時間で実現できる。
[0031] 可逆性を有する縮退を行うことで、縮退されたプログラム依存グラフ PDGと元のプロ グラム依存グラフ PDGとの可逆性を保証できる。これにより、縮退されたプログラム依 存グラフ PDGから正しいプログラムを出力できる。
図 7は、本発明の第 2の実施形態を示している。第 1の実施形態で説明した要素と 同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略 する。この実施形態では、抽象構文木に基づいてプログラム依存グラフ PDGが縮退 される。このために、プログラムの抽象構文木表現 AST (Abstract Syntax Tree)およ び文レベルのプログラム依存グラフ PDGが入力される。プログラム解析装置が実施 する処理は、図 2に示したステップ S200の処理を除き第 1の実施形態と同じである。 具体的には、図 3に示した処理の代わりに、図 7に示した処理が実施される。ステップ S520ま、図 3のステップ S500に対応する処理である。ステップ S720ま、図 3のステ ップ S700に対応する処理である。ステップ S520を実行するプロセッサ CPUは、縮 退判定部として機能する。ステップ S720を実行するプロセッサ CPUは、グラフ生成 部として機能する。その他の構成および処理は、図 1および図 2と同じである。
[0032] まず、ステップ S520において、抽象構文木表現 ASTの構文木が深さ優先で探索 され、可逆的に縮退可能な頂点集合 Vbの集合 Vが抽出される。次に、ステップ S72 0において、集合 Vの各要素 Vbについて、プログラム依存グラフ PDG上の対応する 頂点集合が探索され、これ等集合に含まれる頂点力^つの頂点に縮退される。すな わち、縮退されたプログラム依存グラフ PDGが生成される。
[0033] 以上、第 2の実施形態においても、上述した第 1の実施形態と同様の効果を得るこ とができる。さらに、この実施形態では、プログラムの抽象構文木表現 ASTを用いる ことにより、規模が小さぐかつ可逆性が保証されたプログラム依存グラフ PDGを生成 できる。
図 8は、本発明の第 3の実施形態を示している。第 1および第 2の実施形態で説明 した要素と同一の要素については、同一の符号を付し、これ等については、詳細な
説明を省略する。この実施形態では、第 2の実施形態(図 7)の探索および変換の手 順を簡略化するために、プログラムの抽象構文木表現 ASTのみが入力される。プロ グラム解析装置が実施する処理は、図 2に示したステップ S 200の処理を除き第 1の 実施形態と同じである。具体的には、図 3に示した処理の代わりに、図 8に示した処 理が実施される。ステップ S530は、図 3のステップ S 500に対応する処理である。ス テツプ S730、 S 732は、図 3のステップ S700に対応する処理である。ステップ S630 は、図 3のステップ S500Aに対応する処理である。ステップ S 530、 S630を実行する プロセッサ CPUは、縮退判定部として機能する。ステップ S 730、 S732を実行するプ 口セッサ CPUは、グラフ生成部として機能する。その他の構成および処理は、図 1お よび図 2と同じである。
[0034] まず、ステップ S 530において、図 7のステップ S520と同様に、抽象構文木表現 AS Tの構文木が深さ優先で探索され、可逆的に縮退可能な頂点集合 Vbの集合 Vが抽 出される。次に、ステップ S730において、抽象構文木上で頂点集合 Vbが、 1つの頂 点に縮退される。ステップ S630において、探索が終了していない場合、ステップ S5 30、 S730が繰り返し実施される。探索が終了した場合、ステップ S 732において、図 3に示したステップ S 700と同様に、縮退されたプログラム依存グラフ PDGが生成され る。
[0035] 図 9は、図 8のステップ S260のアルゴリズムを示している。すなわち、抽象構文木表 現から可逆的に縮退可能な頂点集合を求めるアルゴリズムは、図 9のように表現でき る。前述の制御の流れを再構成するための条件(1 )および条件(2)を満たさなレ、C言 語の構文として、 switch文、 do-while文、 break文、 goto文、関数の末尾以外での retur n文がある。 switch文および do-while文については、文全体を 1つの頂点に縮退するこ とで、条件(1 )および条件(2)を満足させることができる(処理 1)。 for文、 while文内の break文については直近の親である for文あるいは while文全体を 1つの頂点に縮退す ることで、条件(1 )および条件(2)を満足させることができる(処理 2)。 goto文および re turn文については、構文木表現から適切なハンモックを探索することが困難なため、 制御フローグラフに変換した後、ハンモックを探索すればよい(処理 3)。抽象構文木 に基づくプログラム依存グラフ PDGの縮退は、 goto文や関数の末尾以外での return
文をふくまないプログラムの場合、縮退する範囲の探索が簡単になるという利点があ る。
[0036] 以上、第 3の実施形態においても、上述した第 1および第 2の実施形態と同様の効 果を得ること力 Sできる。
図 10は、本発明の第 4の実施形態を示している。第 1の実施形態で説明した要素と 同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略 する。この実施形態は、プログラム依存グラフ PDGに基づいてこのプログラム依存グ ラフ PDGを縮退するための基本原理を示してレ、る。プログラム解析装置が実施する 処理は、図 2に示したステップ S200の処理を除き第 1の実施形態と同じである。具体 的には、図 3に示した処理の代わりに、図 10に示した処理が実施される。ステップ S5 40は、図 3のステップ S500Aに対応する処理である。ステップ S542、 S544は、図 3 のステップ S500に対応する処理である。ステップ S640は、図 3のステップ S600に 対応する処理である。ステップ S740は、図 3のステップ S700に対応する処理である 。ステップ S540、 S542、 S544、 S640を実行するプロセッサ CPUは、縮退半 U定部と して機能する。ステップ S740を実行するプロセッサ CPUは、グラフ生成部として機能 する。その他の構成および処理は、図 1および図 2と同じである。
[0037] まず、ステップ S542において、入力された文レベルのプログラム依存グラフ PDGに 基づいて、プログラム依存グラフ PDG内の頂点間の結合の強さが求められる。結合 度(依存要素)は、データ依存辺とその大きさ、および、制御依存辺、処理の大きさか ら計算される。次に、ステップ S544において、頂点間の結合度が、予め設定された 所定の結合度 Xを超えるか否かが判定される。次に、ステップ S640において、結合 度が上記 Xを超える頂点の依存関係が縮退可能か否かが判定される。縮退可能な 場合、ステップ S740において、頂点を結合し依存関係を縮退する。ステップ S542、 S544、 S640、 S740の処理を、プログラム依存グラフ PDGの全ての頂点間で実施 することにより、縮退されたプログラム依存グラフ PDGが生成される。
[0038] なお、この実施形態では、次の 2つの条件(6)、 (7)を満たすことが、可逆的に縮退 可能な条件になる。
(6)対応する制御フローグラフ CFG上で、頂点集合の外から頂点集合の内への分岐
は、頂点集合の先頭頂点へのみである。対応する制御フローグラフ CFG上で、頂点 集合の内から頂点集合の外への分岐は、頂点集合の最後の頂点のみである。
(7)頂点間のデータ依存パスに外部の頂点は含まれない。
[0039] 図 11は、第 4の実施形態においてプログラム依存グラフ PDGを縮退する例を示し ている。この例では、プログラム依存グラフ PDGの構造に着目し、図中のプログラム 内に下線で示した 2ステップが縮退される。
以上、第 4の実施形態においても、上述した第 1の実施形態と同様の効果を得るこ とができる。さらに、この実施形態では、プログラム依存グラフ PDGのみを用いること により、規模が小さぐかつ可逆性が保証されたプログラム依存グラフ PDGを生成で きる。
[0040] 図 12は、本発明の第 5の実施形態を示している。第 1および第 4の実施形態で説明 した要素と同一の要素については、同一の符号を付し、これ等については、詳細な 説明を省略する。この実施形態は、第 4の実施形態を、さらに具体的に示したもので あり、プログラム依存グラフ PDGに基づいてこのプログラム依存グラフ PDGが縮退さ れる。プログラム解析装置が実施する処理は、図 2に示したステップ S200の処理を 除き第 1の実施形態と同じである。具体的には、図 3に示した処理の代わりに、図 12 に示した処理が実施される。ステップ S560は、図 3のステップ S500Aに対応する処 理である。ステップ S562、 S564, S566, S568, S569iま、図 3のステップ S500に 対応する処理である。ステップ S750は、図 3のステップ S600とステップ S700に対応 する処理である。ステップ S752は、図 3のステップ S700に対応する処理である。ステ ップ S560、 S562、 S564、 S566、 S568、 S569を実行するプロセッサ CPUは、縮 退判定部として機能する。ステップ S750、 S752を実行するプロセッサ CPUは、ダラ フ生成部として機能する。その他の構成および処理は、図 1および図 2と同じである。
[0041] 図 12では、制御の流れを再構成するための上記条件(1)および条件(2)を満たす プログラム依存グラフ PDGの制御依存部分グラフは木構造になるとレ、う規則を用い て、プログラム依存グラフ PDGが縮退される。また、可逆的に縮退可能にするために 、上述した条件(6)、(7)を満たすことが必要である。図 12に示した処理は、ステップ S560に示すように、プログラム依存グラフ PDGの制御依存部分グラフを後順に走查
することで実施される。
[0042] まず、ステップ S562において、頂点 Vxがリーフ(木構造の末端)にあるか否かが判 定される。頂点 Vxがリーフにある場合、ステップ S564において、リーフにある頂点 V Xに対して頂点間の結合度が求められる。頂点 Vxがリーフにない場合、すなわち、頂 点 Vxが木構造の途中にある場合、ステップ S750において、結合度が高ぐ条件(7) を満たす子頂点間が結合され、縮退される。
[0043] 次に、ステップ S566において、頂点 Vxと子頂点間の結合度 (親子間の結合度)が 求められる。結合度が高い場合、ステップ S752において、頂点 Vx以下の制御依存 部分木が、頂点に縮退される。次に、ステップ S568において、縮退後の頂点 Vxに 対して、結合度が求められる。結合度が低い場合、ステップ S 569において、頂点 Vx 以下の部分木と、部分木以外の頂点間との結合度が、頂点 Vxに集積される。これに より、上記条件 (6)を満たす範囲で、結合すべき頂点集合を探索できる。そして、全 ての探索が終了した時点でプログラム依存グラフ PDGが出力される。以上、第 5の実 施形態においても、上述した第 1および第 4の実施形態と同様の効果を得ることがで きる。
[0044] なお、上述した実施形態では、プロセッサ CPUがプログラム解析プログラムを実行 することにより、縮退されたプログラム依存グラフ PDGを生成し、このプログラム依存 グラフ PDGに基づレ、て最適化された逐次プログラム(プログラムコード)を生成する例 を述べた。本発明は力かる実施形態に限定されるものではない。例えば、上述した縮 退判定部、グラフ生成部、再構成部、制御フローグラフ生成部およびコード生成部は 、ハードウェアで実現されてもよい。
[0045] 以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例 は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱し ない範囲で変形可能であることは明らかである。
産業上の利用可能性
[0046] 本発明は、大規模なプログラムを最適化するために用いるプログラム依存グラフの 生成方法に適用できる。
Claims
[1] プログラムの文および制御の依存関係を表す複数の依存要素で構成されるプログ ラム解析情報を用いて、可逆的に縮退可能な依存要素群を求め、求めた依存要素 群を縮退することで依存要素が縮退されたプログラム依存グラフを生成することを特 徴とするプログラム解析方法。
[2] 請求項 1記載のプログラム解析方法において、
プログラム解析情報として制御フローグラフおよびプログラム依存グラフを用い、縮 退可能な依存要素群を縮退し、縮退できない依存要素についてハンモックを探索し 、探索されたハンモックを縮退することで縮退されたプログラム依存グラフを生成する ことを特徴とするプログラム解析方法。
[3] 請求項 1記載のプログラム解析方法において、
プログラム解析情報としてプログラムの抽象構文木表現およびプログラム依存ダラ フを用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な 頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存グラフ上の頂点集 合を 1つの頂点に縮退することで縮退されたプログラム依存グラフを生成することを特 徴とするプログラム解析方法。
[4] 請求項 1記載のプログラム解析方法において、
プログラム解析情報としてプログラムの抽象構文木表現を用レ、、抽象構文木表現中 の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な 頂点集合を 1つの頂点に縮退し、縮退した頂点を含む頂点集合を用いて縮退された プログラム依存グラフを生成することを特徴とするプログラム解析方法。
[5] 請求項 1記載のプログラム解析方法において、
プログラム解析情報としてプログラム依存グラフを用レ、、プログラム依存グラフ中の 依存要素である頂点間の結合度を探索し、所定の結合度を超える結合度を有する 頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそれぞれ 1つの頂 点に縮退し、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存ダラ フを生成することを特徴とするプログラム解析方法。
[6] 請求項 1記載のプログラム解析方法において、
縮退されたプログラム依存グラフにおいて制御の流れを再構成し、縮退された制御 フローグラフを生成し、縮退された制御フローグラフから文レベルの制御フローグラフ を生成し、文レベルの制御フローグラフからプログラムコードを生成することを特徴と するプログラム解析方法。
[7] プログラムの文および制御の依存関係を表す複数の依存要素で構成されるプログ ラム解析情報を用いて、可逆的に縮退可能な依存関係群を求める縮退判定部と、 前記縮退判定部により縮退可能と判定された依存要素群を縮退することで縮退さ れたプログラム依存グラフを生成するグラフ生成部とを備えていることを特徴とするプ ログラム解析装置。
[8] 請求項 7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報として制御フローグラフおよびプログラム 依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素につい てハンモックを探索し、探索されたハンモックを縮退し、
前記グラフ生成部は、縮退された依存要素群および縮退されたハンモックを用いて 縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。
[9] 請求項 7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラムの抽象構文木表現および プログラム依存グラフを用レ、、抽象構文木表現中の依存要素である頂点集合を探索 して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存 グラフ上の頂点集合を 1つの頂点に縮退し、
前記グラフ生成部は、縮退された頂点集合を用いて縮退されたプログラム依存ダラ フを生成することを特徴とするプログラム解析装置。
[10] 請求項 7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラムの抽象構文木表現を用い 、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合 を求め、縮退可能な頂点集合を 1つの頂点に縮退し、
前記グラフ生成部は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム 依存グラフを生成することを特徴とするプログラム解析装置。
[11] 請求項 7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラム依存グラフを用い、プログ ラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超え る結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそ れぞれ 1つの頂点に縮退し、
前記グラフ生成部は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム 依存グラフを生成することを特徴とするプログラム解析装置。
[12] 請求項 7記載のプログラム解析装置において、
縮退されたプログラム依存グラフにおいて制御の流れを再構成する再構成部と、 縮退された制御フローグラフを生成し、縮退された制御フローグラフ力、ら文レベルの 制御フローグラフを生成する制御フローグラフ生成部と、
文レベルの制御フローグラフからプログラムコードを生成するコード生成部とを備え ていることを特徴とするプログラム解析装置。
[13] プログラムを解析するために、コンピュータに、
プログラムの文および制御の依存関係を表したプログラム解析情報を用いて、可逆 的に縮退可能な依存関係を求める縮退判定処理と、
前記縮退判定処理により縮退可能と判定された依存要素群を縮退することで縮退 されたプログラム依存グラフを生成するグラフ生成処理とを実行させるためのプロダラ ム解析プログラム。
[14] 請求項 13記載のプログラム解析プログラムにおレ、て、
前記縮退判定処理は、プログラム解析情報として制御フローグラフおよびプロダラ ム依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素につ レ、てハンモックを探索し、探索されたハンモックを縮退し、
前記グラフ生成処理は、縮退された依存要素群および縮退されたハンモックを用い て縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログ ラム。
[15] 請求項 13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラムの抽象構文木表現およ
びプログラム依存グラフを用い、抽象構文木表現中の依存要素である頂点集合を探 索して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依 存グラフ上の頂点集合を 1つの頂点に縮退し、
前記グラフ生成処理は、縮退された頂点集合を用いて縮退されたプログラム依存グ ラフを生成することを特徴とするプログラム解析プログラム。
[16] 請求項 13記載のプログラム解析プログラムにおレ、て、
前記縮退判定処理は、プログラム解析情報としてプログラムの抽象構文木表現を 用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点 集合を求め、縮退可能な頂点集合を 1つの頂点に縮退し、
前記グラフ生成処理は、縮退した頂点を含む頂点集合を用いて縮退されたプログ ラム依存グラフを生成することを特徴とするプログラム解析プログラム。
[17] 請求項 13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラム依存グラフを用い、プロ グラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超 える結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合を それぞれ 1つの頂点に縮退し、
前記グラフ生成処理は、縮退した頂点を含む頂点集合を用いて縮退されたプログ ラム依存グラフを生成することを特徴とするプログラム解析プログラム。
[18] 請求項 13記載のプログラム解析プログラムにおレ、て、
コンピュータに、
縮退されたプログラム依存グラフにおいて制御の流れを再構成する再構成処理と、 縮退された制御フローグラフを生成し、縮退された制御フローグラフ力、ら文レベルの 制御フローグラフを生成する制御フローグラフ生成処理と、
文レベルの制御フローグラフからプログラムコードを生成するコード生成処理とを実 行させるためのプログラム角军析プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/302955 WO2007096935A1 (ja) | 2006-02-20 | 2006-02-20 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
JP2008501494A JP5045666B2 (ja) | 2006-02-20 | 2006-02-20 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
US12/191,623 US8181171B2 (en) | 2006-02-20 | 2008-08-14 | Method and apparatus for analyzing large scale program and generation of code from degenerated program dependence graph |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/302955 WO2007096935A1 (ja) | 2006-02-20 | 2006-02-20 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/191,623 Continuation US8181171B2 (en) | 2006-02-20 | 2008-08-14 | Method and apparatus for analyzing large scale program and generation of code from degenerated program dependence graph |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2007096935A1 true WO2007096935A1 (ja) | 2007-08-30 |
Family
ID=38436996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2006/302955 WO2007096935A1 (ja) | 2006-02-20 | 2006-02-20 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8181171B2 (ja) |
JP (1) | JP5045666B2 (ja) |
WO (1) | WO2007096935A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092747A (zh) * | 2011-10-27 | 2013-05-08 | 西门子公司 | 一种控制程序的验证和测试方法及系统 |
JP2014206977A (ja) * | 2013-04-12 | 2014-10-30 | 富士通株式会社 | ソフトウェアメトリクスの決定 |
CN101639806B (zh) * | 2009-09-01 | 2015-06-03 | 中兴通讯股份有限公司 | 用于自动化测试的拓扑适配方法和装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060200811A1 (en) * | 2005-03-07 | 2006-09-07 | Cheng Stephen M | Method of generating optimised stack code |
US8683441B2 (en) | 2006-01-11 | 2014-03-25 | International Business Machines Corporation | Software equivalence checking |
US8826255B1 (en) * | 2007-06-18 | 2014-09-02 | The Mathworks, Inc. | Restructuring control flow graphs generated from a model |
US9110706B2 (en) * | 2009-02-09 | 2015-08-18 | Microsoft Technology Licensing, Llc | General purpose distributed data parallel computing using a high level language |
US8584100B2 (en) * | 2009-12-10 | 2013-11-12 | Sap Ag | Bridging code changes and testing |
TWI448965B (zh) * | 2011-06-15 | 2014-08-11 | Tatung Co | 解析程式碼的方法 |
US8666999B2 (en) * | 2011-08-02 | 2014-03-04 | Rockwell Automation Technologies, Inc. | Search utility program for software developers |
JP5910230B2 (ja) * | 2012-03-26 | 2016-04-27 | 富士通株式会社 | 設計支援プログラム、設計支援方法、および設計支援装置 |
US8806464B2 (en) | 2012-04-26 | 2014-08-12 | Hewlett-Packard Development Company, L.P. | Process flow optimized directed graph traversal |
US9658999B2 (en) * | 2013-03-01 | 2017-05-23 | Sony Corporation | Language processing method and electronic device |
US9619364B2 (en) * | 2013-03-14 | 2017-04-11 | Nvidia Corporation | Grouping and analysis of data access hazard reports |
US9122561B2 (en) * | 2013-09-24 | 2015-09-01 | International Business Machines Corporation | Program integration that accommodates restrictions on merge-locations |
GB2521367A (en) * | 2013-12-17 | 2015-06-24 | Ibm | Adaptable and extensible runtime and system for heterogeneous computer systems |
US9886736B2 (en) | 2014-01-20 | 2018-02-06 | Nvidia Corporation | Selectively killing trapped multi-process service clients sharing the same hardware context |
CN105512046B (zh) * | 2016-02-01 | 2018-02-13 | 北京理工大学 | 基于粒子群优化算法的Android自动化测试方法 |
JP6933012B2 (ja) * | 2017-06-14 | 2021-09-08 | 富士通株式会社 | 解析装置、解析プログラムおよび解析方法 |
JP6926841B2 (ja) * | 2017-08-31 | 2021-08-25 | 富士電機株式会社 | コントロールシステム、開発支援装置、及びコントロール方法 |
JP2023084609A (ja) * | 2021-12-07 | 2023-06-19 | 富士通株式会社 | 変換プログラムおよび変換方法 |
CN114879974B (zh) * | 2022-06-09 | 2024-09-13 | 西安交通大学 | 一种基于cpg+图的隐式依赖模式分析方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5161216A (en) * | 1989-03-08 | 1992-11-03 | Wisconsin Alumni Research Foundation | Interprocedural slicing of computer programs using dependence graphs |
US6064819A (en) * | 1993-12-08 | 2000-05-16 | Imec | Control flow and memory management optimization |
US5802375A (en) * | 1994-11-23 | 1998-09-01 | Cray Research, Inc. | Outer loop vectorization |
US5918035A (en) * | 1995-05-15 | 1999-06-29 | Imec Vzw | Method for processor modeling in code generation and instruction set simulation |
US5894576A (en) * | 1996-11-12 | 1999-04-13 | Intel Corporation | Method and apparatus for instruction scheduling to reduce negative effects of compensation code |
US6077313A (en) * | 1997-10-22 | 2000-06-20 | Microsoft Corporation | Type partitioned dataflow analyses |
US6578197B1 (en) * | 1998-04-08 | 2003-06-10 | Silicon Graphics, Inc. | System and method for high-speed execution of graphics application programs including shading language instructions |
US6327699B1 (en) * | 1999-04-30 | 2001-12-04 | Microsoft Corporation | Whole program path profiling |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6374403B1 (en) * | 1999-08-20 | 2002-04-16 | Hewlett-Packard Company | Programmatic method for reducing cost of control in parallel processes |
IL131782A (en) * | 1999-09-07 | 2005-11-20 | Ibm | Automatic removal of array memory leaks |
US6848100B1 (en) * | 2000-03-31 | 2005-01-25 | Intel Corporation | Hierarchical software path profiling |
JP3664473B2 (ja) | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
JP3707727B2 (ja) * | 2000-10-30 | 2005-10-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
US7165245B2 (en) * | 2001-04-27 | 2007-01-16 | Intel Corporation | Pruning local graphs in an inter-procedural analysis solver |
US7650593B2 (en) * | 2004-03-25 | 2010-01-19 | Microsoft Corporation | Proxy objects for display |
US7765534B2 (en) * | 2004-04-30 | 2010-07-27 | International Business Machines Corporation | Compiler with cache utilization optimizations |
US7478378B2 (en) * | 2004-11-29 | 2009-01-13 | International Business Machines Corporation | Semantically consistent adaptation of software applications |
US7624386B2 (en) * | 2004-12-16 | 2009-11-24 | Intel Corporation | Fast tree-based generation of a dependence graph |
US7627864B2 (en) * | 2005-06-27 | 2009-12-01 | Intel Corporation | Mechanism to optimize speculative parallel threading |
-
2006
- 2006-02-20 JP JP2008501494A patent/JP5045666B2/ja not_active Expired - Fee Related
- 2006-02-20 WO PCT/JP2006/302955 patent/WO2007096935A1/ja active Application Filing
-
2008
- 2008-08-14 US US12/191,623 patent/US8181171B2/en not_active Expired - Fee Related
Non-Patent Citations (3)
Title |
---|
OGAWA H. ET AL.: "OpenJIT Front End System no Sekkei (A Design of OpenJIT Fronted System)", TRANSACTIONS OF INFORMATION PROCESSING SOCIETY OF JAPAN, vol. 41, no. SIG2(PRO6), 15 March 2000 (2000-03-15), pages 1 - 12, XP003017220 * |
OHATA F. ET AL.: "Izon Kankei no Kyokushosei o Riyo shita Program Izon Graph no Koritsuteki na Kochiku Hoho (Efficient Construction Method of Program Dependence Graph Using Dependency Locality)", INFORMATION PROCESSING SOCIETY OF JAPAN KENKYU HOKOKU (99-SE-122), vol. 99, no. 28, 19 March 1999 (1999-03-19), pages 17 - 24, XP003017219 * |
OHATA F. ET AL.: "Slice Keisan Koritsuka no Tame no Program Izon Graph no Setten Shuyakuho (Node Merging Method of Program Dependence Graph for Efficient Slice Computation)", THE TRANSACTIONS OF THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS, vol. J84-D-I, no. 7, 1 July 2001 (2001-07-01), pages 1021 - 1029, XP003017218 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639806B (zh) * | 2009-09-01 | 2015-06-03 | 中兴通讯股份有限公司 | 用于自动化测试的拓扑适配方法和装置 |
CN103092747A (zh) * | 2011-10-27 | 2013-05-08 | 西门子公司 | 一种控制程序的验证和测试方法及系统 |
JP2014206977A (ja) * | 2013-04-12 | 2014-10-30 | 富士通株式会社 | ソフトウェアメトリクスの決定 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2007096935A1 (ja) | 2009-07-09 |
US20090007087A1 (en) | 2009-01-01 |
JP5045666B2 (ja) | 2012-10-10 |
US8181171B2 (en) | 2012-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5045666B2 (ja) | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム | |
Lai et al. | HeteroCL: A multi-paradigm programming infrastructure for software-defined reconfigurable computing | |
Zheng et al. | Flextensor: An automatic schedule exploration and optimization framework for tensor computation on heterogeneous system | |
Alizadeh et al. | Managing computational complexity using surrogate models: a critical review | |
Blott et al. | FINN-R: An end-to-end deep-learning framework for fast exploration of quantized neural networks | |
Pham et al. | Predicting workflow task execution time in the cloud using a two-stage machine learning approach | |
Zhou et al. | Rosetta: A realistic high-level synthesis benchmark suite for software programmable FPGAs | |
US11574030B1 (en) | Solving optimization problems using a hybrid computer system | |
US8572590B2 (en) | Methods and apparatus for joint parallelism and locality optimization in source code compilation | |
Lugowski et al. | A flexible open-source toolbox for scalable complex graph analysis | |
Lubinski et al. | Optimization applications as quantum performance benchmarks | |
Wahib et al. | Automated GPU kernel transformations in large-scale production stencil applications | |
Qawasmeh et al. | Performance portability in reverse time migration and seismic modelling via OpenACC | |
JP5057969B2 (ja) | データ操作のためのコンピュータシステム及び関連方法 | |
Lee et al. | Performance portability study for massively parallel computational fluid dynamics application on scalable heterogeneous architectures | |
CN114631099A (zh) | 人工智能透明度 | |
US8312400B2 (en) | Verification supporting system | |
Faber et al. | Challenges designing for FPGAs using high-level synthesis | |
Pintér et al. | Nonlinear optimization in mathematica with mathoptimizer professional | |
El-Araby et al. | A framework for evaluating high-level design methodologies for high-performance reconfigurable computers | |
Velasquez et al. | Automated synthesis of quantum circuits using symbolic abstractions and decision procedures | |
Steingartner et al. | From high-level language to abstract machine code: An interactive compiler and emulation tool for teaching structural operational semantics | |
Fabeiro et al. | OCLoptimizer: An iterative optimization tool for OpenCL | |
Grant et al. | Introducing the StataStan interface for fast, complex Bayesian modeling using Stan | |
Aissa et al. | Use of modern GPUs in design optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2008501494 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 06745364 Country of ref document: EP Kind code of ref document: A1 |