WO2012137390A1 - 並列化設計支援システム、プログラム、および方法 - Google Patents
並列化設計支援システム、プログラム、および方法 Download PDFInfo
- Publication number
- WO2012137390A1 WO2012137390A1 PCT/JP2011/077974 JP2011077974W WO2012137390A1 WO 2012137390 A1 WO2012137390 A1 WO 2012137390A1 JP 2011077974 W JP2011077974 W JP 2011077974W WO 2012137390 A1 WO2012137390 A1 WO 2012137390A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- file
- program
- information
- division
- constraint
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Definitions
- the present invention relates to a design support system, a design support program, and a design support method for executing computer programs in parallel.
- Patent Document 1 describes a method, system, and program for managing a grid computing environment, but does not consider a method for migrating an existing data processing program to the grid computing environment. .
- remodeling the data processing program requires a lot of costs, so it is desirable to achieve parallelization by dividing only the data to be processed without remodeling the data processing program as much as possible.
- the parallel design method is not considered.
- the present invention generates information specifying a data division and arrangement method for realizing parallelization of the data processing program based on the analysis of the data processing program, so that the existing data in the grid computing environment is generated.
- An object of the present invention is to provide a system, a program, and a method for supporting parallel design for realizing parallel execution of processing programs.
- the present application includes a plurality of means for solving the above-mentioned problem.
- a computer system for supporting the design of a data division and arrangement method for realizing parallelization of a program The target program, multiplicity of parallel execution, and physical file information are received by the input device and registered in the storage device, and the parallelized target program is analyzed to generate program syntax / dependency analysis information Used for the program syntax / dependency analysis unit, the information on the control structure of the file input / output processing performed by the parallelized program based on the program syntax / dependency analysis information, and the file input / output processing performed by the parallelized program Generates file access logic information consisting of dependency information on input / output files by program variables A file access logic generation unit; a parallelism determination unit that determines parallelism of the parallelized program based on the file access logic information; the program syntax / dependency analysis information; and the file access logic information.
- a file division constraint generation unit that generates constraint information when the input file for the parallelization target program is divided, the file division constraint information, and the multiplicity
- a file division method designation information generation unit for generating information for designating a method for dividing an input file of the parallelization target program for realizing parallel execution of the parallelization target program at the multiplicity. Supporting the design of a data division and arrangement method for parallelizing programs, Computer system.
- control dependence table of 2nd embodiment of this invention It is an example of the control dependence table of 2nd embodiment of this invention. It is an example of the file access control structure table of 2nd embodiment of this invention. It is an example of the variable dependence table of 2nd embodiment of this invention. It is a processing flow of the logical file division
- FIG. 1 is a configuration diagram of a parallelization design support system 100 of the present embodiment.
- a parallelization design support system 100 (hereinafter, system 100) shown in FIG. 1 is a computer system that improves the efficiency of design work necessary for parallelizing a program.
- the system 100 is a computer device such as a server, for example, and includes a storage device 110 such as a hard disk drive, a memory 120 that is volatile storage means such as a RAM, a CPU 130, a communication port 140, and the like connected to each other by a BUS. .
- the system 100 realizes various functions by causing the CPU 130 to read and execute the program 150 stored in the storage device 110 such as a hard disk drive into a volatile memory 120 such as a RAM. Further, the system 100 includes an input device 160 such as various keyboards and buttons generally provided in a computer device, and an output device 170 such as a display, a speaker, and a printer as necessary.
- the system 100 has a communication port 140 such as a NIC (Network Interface Card) that exchanges data with other devices, and can communicate with a terminal or the like used by a predetermined administrator via a network. May be.
- NIC Network Interface Card
- the system 100 may receive the program 150 transmitted from another information processing apparatus via a network at the communication port 140 and store the program 150 in the memory 120 or the storage device 110. Further, data used in the processing of the program 150 such as the input information 210 is stored in another information processing apparatus, and the system 100 receives the data from the information processing apparatus through the communication port 140 and performs the processing of the program 150. It can also be used.
- the system 100 includes an input information registration unit 101 that accepts input information 210 to the program 150 by the input device 160 and registers it in the storage device 110.
- the input information 210 includes a parallelization target program 211, physical file information 212 that is an input or output of the parallelization target program 211, and a multiplicity 213 that is the number of concurrent executions after parallelization.
- the parallelization target program 211 is one program, but a plurality of programs may be provided.
- the system 100 further includes a program syntax / dependency analysis unit 102 that performs syntax analysis and dependency analysis of the registered parallelized program 211 and outputs the result to the program syntax / dependency information 220. ing. Syntax analysis and dependency analysis are techniques applied in the implementation of compilers, for example.
- the program syntax / dependency information 220 includes: file record identification information 221 for identifying variables used by the parallelization target program 211 for file input / output processing; and a command statement for identifying a command sentence constituting the parallelization target program 211 Information 222, variable reference update information 223 for identifying a variable reference and variable update performed by a statement of the parallelization target program 211, a branch condition of the branch instruction statement included in the parallelization target program 211, and a loop instruction It is composed of a conditional syntax tree 224 that is a structure of a repetition condition of statements, control dependency information 225 that stores control dependency relationships between imperative statements, and data dependency information 226 that stores data dependency relationships between variables.
- the system 100 outputs a file access logic information 230, which is information indicating the gist of the file input / output of the parallelized program 211, based on the program syntax / dependency information 220.
- a generation unit 103 is provided.
- the file access logic information 230 includes file access control structure information 231 composed of branch instruction statements and loop instruction statements that affect the presence / absence of execution of file input / output, the number of executions, and the execution order, and the file access control structure information 231. It is composed of variable dependency information 232 relating to the dependency on the input / output file possessed by the variable used therein.
- the system 100 includes a parallelism determination unit 104 that determines whether or not parallelization by dividing an input file is possible for the parallelization target program 211 based on the file access logic information 230.
- the parallelization by dividing the input file will be described later.
- a physical file refers to a block of data that is recognized as a unit on the operating system, for example, and is given a physical file name.
- a logical file refers to a chunk of data that is logically handled as a processing unit in a program. For example, two different programs can describe the same physical file as different logical files.
- the system 100 determines, based on the program syntax / dependency information 220 and the file access logic information 230, the constraints to be satisfied by the file division method for parallelizing the parallelized target program 211.
- the logical file division constraint generation unit 105 that outputs logical file division constraint information 240 described for a logical file that is an expression in the program of the input / output file of the program to be activated 211 is provided.
- the system 100 generates physical file division constraint generation that outputs constraint information 250 to be satisfied by the physical file division method based on the logical file division constraint information 240 and the physical file information 212 included in the input information 210.
- Part 106 is provided.
- the system 100 outputs a physical file division method template 260 that satisfies the physical file division restriction based on the multiplicity 213 included in the physical file division restriction information 250 and the input information 210.
- a divided template generation unit 107 is provided.
- the function units 101 to 107 in the system 100 shown so far may be realized as hardware, or may be realized as a program 150 stored in the storage device 110 realized by a memory, a hard disk drive, or the like.
- the control device such as the CPU 130 reads the corresponding program from the storage device 160 in accordance with the program execution and executes it.
- Step S301 in FIG. 3 is an input information registration step.
- the input information registration unit 101 receives the parallelization target program 211, physical file information 212, and multiplicity 213 by the input device 160 and registers them in the storage device 110.
- the parallelization target program is a program written in the COBOL (trademark) programming language, and its identifier is P01, and the parallelization target program 211 is the entire source code of the program P01. Specific contents of the program P01 will be described later.
- An example of the physical file information 212 is shown in FIG. 4 and will be described later.
- the multiplicity 213 is assumed to be 2.
- FIG. 4 shows an example 400 of a physical file table in which the physical file information 212 is stored.
- the line 410 indicates that the name of the physical file input by the program P01 is “order receipt FILE” and is identified as the logical file F11 within the program P01.
- the row 420 indicates that the name of the physical file output by the program P01 is “total FILE” and is identified as the logical file F12 within the program P01.
- FIG. 5 is an outline of a processing example performed by the program P01.
- the input file 510 order details FILE
- the output file 520 total FILE
- Each record of the order details FILE 510 is composed of three items: a detail ID 511, a product code 512, and a quantity 513.
- the length (number of bytes) of each item is a part of the definition of the file and is common among records.
- Each record of the order details FILE stores the quantity that the product specified by the product code is ordered in the transaction specified by the detail ID.
- Each record of the output file 520 is composed of two items, a product code 521 and a quantity 522.
- the length (number of bytes) of each item is a part of the definition of the file and is common among records.
- Each record of the total FILE indicates that the total quantity ordered for the product specified by the product code 521 is the quantity 522.
- the program P01 is a program in which the order details FILE is an input file and the total FILE is an output file.
- the access form to the input file performed by the program P01 is sequentially read.
- the access form to the output file performed by the program P01 is sequential writing.
- the program P01 reads the records sequentially from the beginning of the order details FILE510. When it is determined that all records having the same product code 512 have been read, the values of the quantities 513 are summed, and the total order quantity of the products corresponding to the product codes is written in the total FILE 520.
- the record 515 is read, it is determined that all the records related to the product code 22222 have been read, and the record 524 is written.
- FIG. 6 shows the result of parallelizing the program P01 for performing the above processing with multiplicity 2 by file division.
- the physical file division arrangement program 630 divides the input file 610 into a divided file 611 and a divided file 622, which are arranged in the parallel execution server 650 and the parallel execution server 660, respectively.
- the parallel execution server 650 executes the same program 670 as the program P01 using the divided file 611 as an input file.
- the program 670 outputs an output file 621.
- the parallel execution server 660 executes the same program 680 as the program P01 using the divided file 612 as an input file.
- the program 680 outputs an output file 622.
- the physical file merge program 640 receives the output file 621 and the output file 622, and outputs a file 620 obtained by merging them.
- the input file 610 is the same as the order detail FILE 510
- the programs 670 and 680 are the same as the program P01
- the output file 620 is the same as the total FILE 520.
- This embodiment outputs the physical file division template information 260, thereby supporting the design of the physical file division arrangement program 630 and the physical file merge program 640 created by the program creator. Will be explained.
- FIG. 7 shows the configuration of the parallelization target program 211.
- the program includes a heading part 701, an environment part 702, a data part 703, and a procedure part 704.
- the heading part 702 includes definitions such as program names.
- the environment unit 702 includes an input / output file definition and an input / output file organization definition.
- the program P01 declares the input file and the output file as sequential files in the environment unit 702.
- FIG. 8 shows an example 801 of the data part 703 of the parallelization target program 211. Detailed descriptions are omitted because they are written according to the COBOL language syntax. The meaning of the data portion example 801 will be described below.
- FIG. 9 is a schematic diagram of a portion related to a file in the description content of the example 801 of the data portion.
- the logical file F11 (930) is associated with the variable R11 (910).
- the variable R11 (910) includes a variable R11-MEISAI-ID (911) having a size of 8 bytes, a variable R11-PCODE (912) having a size of 5 bytes, and a variable R11-QUANTITY (3 bytes having a size of 3 bytes). 913) have three variables as partial items.
- the size of the variable R11 (910) is 16 bytes.
- variable R11 When the statement “READ F11” is executed in the parallelization target program 211, the content of one record of the logical file F11 is stored in the variable R11 (910).
- the partial item of the variable R11 corresponds to the item constituting the record.
- variable R12 (920) has two variables, ie, a variable R12-PCODE (921) having a size of 5 bytes and a variable R12-QUANTITY (922) having a size of 3 bytes.
- the size of the variable R12 (920) is 8 bytes.
- variable R12 When the statement “WRITE R12” is executed in the parallelization target program 211, the contents of the variable R12 (920) are written to the logical file F12 (940) as one new record.
- the partial item of the variable R12 corresponds to the item constituting the record.
- variable of the parallelization target program 211 and the parallelization target program are identified by identifying the layout of the variable associated with the file by the above means. Identifies the correspondence with the layout of record items to be read and written. Even when the parallelization target program is written in a language other than COBOL, if the correspondence between the variables in the program and the file record items is identified, parallelization design support by the method described in this embodiment is performed. be able to.
- Step S302 is a program syntax / dependency analysis step.
- the program syntax / dependency analysis unit 102 performs syntax analysis and dependency analysis of the parallelized program 211 and outputs program syntax / dependency information 220. Since the analysis processing performed by the program syntax / dependency analysis unit 102 is known in the field of compiler technology and program analysis technology, the details of the processing will not be described. An example of a table constituting the program syntax / dependency analysis information 220 will be described.
- FIG. 10 shows an example 1000 of a file record identification table in which the file record identification information 221 is stored.
- a row of the file record identification table 1000 corresponds to a variable that is defined to be associated with a file in the data part 801 among the variables of the parallelization target program 211.
- the column 1001 of the file record identification table 1000 is a variable identifier, and specifies a variable corresponding to the row. In this embodiment, it is assumed that the variable identifier and the variable name are the same.
- a column 1002 is a logical file identifier, and specifies a logical file to which the variable is related. In this embodiment, it is assumed that the logical file identifier is the same as the logical file name.
- a column 1003 is an item identifier, and identifies a partial item of the record corresponding to the variable among the records of the logical file related to the variable, by a position in the record.
- variable R11 is associated with logical file F11 and its item identifier is [1-16]. This indicates that the variable R11 corresponds to the entire record (16 bytes) of the logical file F11.
- variable R11-MEISAI-ID is related to the logical file F11 and its item identifier is [1-8]. This indicates that the variable R11-MEISAI-ID corresponds to the content of the first 8 bytes of the record of the logical file F11.
- FIG. 11 shows an example 1100 of a command statement table storing the command statement information 222.
- Each line of the command statement table 1100 corresponds to an analysis unit for analyzing the procedure part of the parallelized target program 211.
- the analysis unit is called a command statement, and is identified by giving a command statement identifier.
- the analysis unit does not necessarily match the statement in the COBOL language syntax.
- a phrase that is a component of the statement in the COBOL language may be the analysis unit.
- Column 1101 of the command statement table 1100 is a command statement identifier. In this embodiment, it is a serial number in the procedure division. Column 1102 is the contents of the command statement.
- the command statements appearing in the command statement table 1100 will be briefly described.
- the OPEN statement is a command statement for opening a logical file.
- the MOVE statement is a command statement that updates the value of a variable.
- the READ statement is a command statement that reads one record from the input file and stores the contents in a variable associated with the record of the input file.
- a statement in the scope of the AT END clause is executed when the end of the input file is reached as a result of reading.
- a PERFORM statement is a statement that repeatedly executes a group of statements within the scope. The iterative process ends when the condition described below UNTIL becomes true.
- the ADD statement is a command statement for adding the value of the first operand to the second operand.
- the WRITE statement is a command statement that writes the contents of a variable specified by an operand as one new record in the logical file associated with the variable.
- a statement beginning with END- indicates the end of the scope of the corresponding statement.
- the scope of the command statement is also indicated by indentation in the column 1102.
- HIGH-VALUE is a constant.
- FIG. 12 is an example 1200 of a variable reference update table that stores the variable reference update information 223.
- the row of the variable reference update table 1200 expresses a variable reference operation or an update operation performed by the command statement.
- the column 1201 of the variable reference update table 1200 is a command statement identifier, and specifies a command statement corresponding to the row.
- a column 1202 is a variable identifier, and identifies a variable corresponding to the line in the command statement corresponding to the line.
- a column 1203 is a type, and specifies either update or reference.
- line 1210 indicates that the MOVE statement with the command statement identifier 4 updates the variable FLG1.
- Line 1220 indicates that the MOVE statement with the command statement identifier 7 refers to the variable R11-PCODE.
- the instruction sentence or the instruction sentence identifier is combined with the instruction sentence identifier and a word for specifying the type of the instruction sentence, such as “4 ⁇ (MOVE) ”. Shall be described.
- the parenthesis part is for explanation only, and in the parallelization support program 150, the parenthesis part is not a part of the statement identifier.
- FIG. 13 shows, as examples of the conditional syntax tree 224, a conditional syntax tree 1310 with a condition below UNTIL of the imperative sentence 6 (PERFORM) and a conditional syntax tree 1320 with a condition below UNTIL of the imperative sentence 9 (PERFORM). Since the definition and generation method of the syntax tree is known, the description is omitted.
- FIG. 14 is an example 1400 of a control dependency table that stores the control dependency information 225.
- the row of the control dependency table 1400 expresses the control dependency that the command statement has with respect to other command statements.
- a column 1401 of the control dependency table 1400 is a dependency source command statement identifier.
- a column 1402 is a dependency destination command statement identifier.
- the statement that the command statement A depends on the command statement B means that whether or not the command statement A is executed depends on the execution result of the command statement B.
- the row 1410 of the control dependency table 1400 indicates that the command statement 4 (MOVE) is control-dependent on the command statement 3 (READ). This is because statement 4 (MOVE) is within the scope of AT END of statement 3 (READ).
- the line 1420 indicates that the command statement 7 (MOVE) is dependent on the command statement 6 (PERFORM). This is because statement 7 (MOVE) is within the scope of statement 6 (PERFORM).
- the control dependency can be replaced by information indicating the scope of branching, repetition, or AT END.
- FIG. 15 shows an example 1500 of a control dependence graph in which the same information as the control dependence table 1400 shown in FIG. 14 is expressed in a graph format.
- the nodes in the control dependency graph 1500 correspond to the statements appearing in the control dependency table 1400.
- the directed edge between nodes corresponds to the control dependence from the dependency source command statement to the dependency destination command statement.
- the control dependency information 225 may be generated and stored as a control dependency graph.
- FIG. 16 is an example 1600 of a data dependency table that stores the data dependency information 226.
- the rows of the data dependency table 1600 indicate the data dependency destination command statements and the variables of the variables in the command statements.
- a column 1601 is a dependent source statement identifier.
- a column 1602 is a dependence source variable identifier.
- a column 1603 is a dependency destination command statement identifier.
- a column 1604 is a dependent variable identifier.
- variable A is data-dependent on variable B means that the value of variable A is affected by the value of variable B.
- the row 1610 of the data dependency table 1600 indicates that the value of the variable R12-PCODE in the command statement 17 (WRITE) has been assigned from the variable CUR-PCODE in the command statement 15 (MOVE).
- the variable R12-PCODE is not specified in the command statement 17 (WRITE), but since the variable R12-PCODE is a partial item of the operand R11 of the WRITE statement, the command statement 17 (WRITE) uses it. Part of the variable.
- step S302 program syntax / dependency analysis.
- step S303 File access logic generation
- Step S303 in FIG. 3 is a file access logic generation step.
- the file access logic generation unit 103 executes a file access logic generation process while referring to the program syntax / dependency information 220 and outputs the file access logic information 230.
- FIG. 17 shows a processing flow of the file access logic generation unit 103.
- termination dependency information 1800 used in the variable dependency analysis step of S1703 is generated.
- file access control structure analysis step of S1702 the file access control structure information 231 is generated.
- S1703 is a variable dependency analysis step, in which the variable dependency information 232 is generated.
- (3-1) Termination dependency analysis (S1701) The termination dependency analysis step S1701 in FIG. 17 will be described.
- the variable is referred to as having end dependency on the input file.
- the variable is referred to as a termination dependent variable.
- FIG. 18 shows an example 1800 of an end dependency table for storing end dependency information.
- Each row of the termination dependency table 1800 corresponds to a variable having termination dependency.
- the column 1801 of the termination dependency table 1800 is a variable identifier of the termination dependency variable.
- a column 1802 is a logical file identifier of the dependency destination.
- Line 1810 of the termination dependency table 1800 indicates that the variable FLG1 is dependent on the logical file F11.
- the terminal dependent variable is specified by the following procedure. First, the READ statement having the AT END phrase is specified by referring to the command statement table 1100. Next, the control dependency table 1400 is referred to, and the command statement that depends on the control to the READ statement is specified. Next, the variable updated by the statement is specified with reference to the variable reference update table 1200. Finally, the logical file from which the READ statement is read is specified based on the file record identification table 1000. Thus, it can be identified that the variable depends on the end of the logical file. (3-2) File access control structure analysis (S1702) The file access control structure analysis step S1702 in FIG. 17 will be described.
- the file access control structure information is an excerpt from the parallelization target program 211 of the control structure (branch or loop) regarding whether or not a file input / output instruction (READ statement or WRITE statement) is executed, the number of executions, and the execution order. .
- FIG. 19 shows an example 1900 of a file access control structure table that stores the file access control structure information 231 output in step S1702.
- Each row of the file access control structure table 1900 corresponds to a command statement constituting the file access control structure in the parallelized target program 211.
- Column 1901 is an identifier of a command statement that constitutes the file access control structure.
- Column 1902 is the contents of the command statement.
- the order of each line in the file access control structure table 1900 and the indentation of the statement content 1902 indicate the relationship between the statement contents 1902 of each line. For example, statement 9 (PERFORM) on line 1910 is within the scope of statement 6 (PERFORM) in the file access control structure.
- Fig. 20 shows the procedure for generating the file access control structure.
- the file input / output statement S is identified based on the command statement table 1100, and is used as a starting point for generating a part of the file access control structure.
- the file input / output statement itself is also identified as a part of the file access control structure (S2001).
- the command statement 11 is the starting point.
- control instructions that affect the execution of the file input / output statement are specified (S2002). This can be achieved, for example, by specifying all nodes reachable from the node of the command statement in the control dependence graph 1500. For example, a command statement 9 (PERFORM) and a command statement 6 (PERFORM) can be reached from the command statement 11 (READ). As a result, the imperative sentence 6 (PERFORM), the imperative sentence 9 (PERFORM), and the imperative sentence 11 (READ) are identified as components of the file access logic control structure.
- the file access logic control structure is generated by repeating S2001 and S2002 for all file input / output statements (S2003). This is the end of the description of S1702 in FIG. (3-3) Variable dependency analysis (S1703)
- S1703 Variable dependency analysis
- the variable dependency analysis step of S1703 in FIG. 17 will be described. Here, the dependency of the variable appearing in the file access logic control structure on the input file or the output file is analyzed.
- variable dependency defines four types: input dependency, indirect dependency, terminal dependency, and output dependency.
- Input dependency means that the variable is associated with a specific item in the record of the input file.
- Indirect dependency means that the variable has been assigned by an input dependent variable. End dependency has already been explained.
- Output dependency means that the variable is associated with a record in the output file.
- FIG. 21 is an example 2100 of a variable dependency table that stores variable dependency information 232.
- a row of the variable dependency table 2100 corresponds to a variable used in a command statement constituting the file access control structure.
- the column 2101 of the variable dependency table 2100 is a dependent source statement identifier.
- a column 2102 is an identifier of a dependency source variable in the dependency source command statement.
- a column 2103 is a dependency type.
- a column 2104 is an identifier of the dependency destination logical file.
- a column 2105 is an identifier of a dependency destination item in the record of the dependency destination logical file.
- the row 2110 of the variable dependency table 2100 is an example of a termination dependent variable.
- Line 2120 is an example of an indirect dependent variable.
- Line 2130 is an example of an input dependent variable.
- Line 2140 is an example of an output dependent variable.
- FIG. 22 is a processing flow of the variable dependency analysis step S1703 of FIG.
- the variable dependency analysis is performed on all variables used in the file access logic control structure (S2201, S2211).
- the input dependency and output dependency of the variable are determined using the file record identification table 1000 (S2202, S2204).
- the rows 2130 and 2140 of the variable dependency table 2100 are generated from the rows 1012 and 1013 of the file record identification table 1000, respectively. If it is input-dependent, the item identifier is also transcribed, but if it is output-dependent, it is not necessary, so it is “*”.
- the end dependency of the variable is determined using the end dependency table 1800 (S2206).
- the row 2110 of the variable dependency table 2100 is generated from the row 1810 of the termination dependency table 1800.
- the item identifier is “*”.
- the line 2120 of the variable dependency table 2100 indicates that the variable CUR-PCODE of the command statement 9 (PERFORM) is an indirect dependency variable, which can be found by the following procedure.
- the variable has been assigned the value of the variable R11-PCODE in the command statement 7 (MOVE). Since the variable R11-PCODE has already been found to be an input dependent variable, it has been found that the CUR-PCODE that is assigned from it is an indirect dependent variable.
- the parallelization design support system 100 can output the file access logic information 230 to an output device 170 such as a display or a printer.
- the user of the parallelization design support system can know the processing contents of the parallelization target program 211 more efficiently by referring to the output file access logic information.
- FIG. 23 shows an output example 2300 of the file access logic information 230. This is based on the contents of the file access control structure table 1900 and displayed by replacing variables in the file access control structure with character strings that more clearly indicate the dependency on the file based on the variable dependency table 2100. Is. Specifically, the input dependent variable is displayed by replacing it with a character string of the format “R (logical file identifier.item identifier)”. The indirect dependent variable is displayed by being replaced with a character string of the format “R * (logical file identifier.item identifier)”. In addition, the output dependent variable is displayed by being replaced with the logical file identifier of the dependency destination.
- R logical file identifier.item identifier
- the atomic formula using the end-dependent variable is converted to “file end (logical file name)” that is a format that clearly indicates that the conditional expression for determining the end of the file is reached. Show.
- the user of the parallelization design support system 100 can know the relationship between each variable and a file more efficiently. Further, since the file access control structure is smaller in size than the parallelization target program 211 itself, the user of the parallelization design support system 100 can more efficiently understand the control structure related to file input / output. .
- step S303 file access logic generation.
- step S304 Parallelism determination
- Step S304 is a parallelism determination step.
- FIG. 24 shows the processing procedure of this step.
- the parallelism determination is performed based on the file access logic information 240. It is determined whether or not there is a loop statement including a READ statement in the scope that ends before the start of the loop statement including the WRITE statement in the scope. If the result is YES, it is determined that parallelization is not possible (S2401). For such a program, the parallelization design support system 100 does not perform step S305 and subsequent steps.
- the edge is traced starting from the WRITE statement, and the PERFORM statement that no longer has a PERFORM statement is specified.
- the command statement 17 WRITE
- the command statement 6 PERFORM
- the input file is read to the end in the first loop process, and after the end of the loop, the output file is output in the second loop process.
- the parallelization design support system 100 of this embodiment determines that parallelization is not possible.
- step S304 parallelism determination.
- step S305 Logical file partitioning constraint generation
- Step S305 is a logical file division constraint generation step.
- FIG. 25 shows the procedure.
- the logical file division constraint generation process includes only step S2501 for generating the logical file division constraint information 240.
- FIG. 26 shows an example 2600 of a logical file partitioning constraint table that stores the logical file partitioning constraint information 240.
- the row of this table corresponds to the input file of the parallelization target program 211. Since there is only one input file for the program P01 which is the parallelization target program of this embodiment, there is only one line.
- the column 2601 of the logical file partitioning restriction table 2600 is an identifier of the parallelization target program.
- a column 2602 is a logical file identifier that identifies an input file.
- a column 2603 is an identifier of a variable that becomes a constraint key in the division of the logical file.
- a column 2604 is an item identifier of the variable.
- the constraint key variable of the logical file F11 is R11-PCODE. This is because when the logical file F11 is divided, it is necessary to divide the records having the same R11-PCODE value, which is one of the items of the F11 record, so that they remain in the same file after the division. Indicates that there is.
- R11-PCODE corresponds to the record item corresponding to the product code in the physical file, but as shown in FIG. 6, records having the same product code must be in the same file even after being divided. If the division is performed between Detail 1 and Detail 2 with the same product code, the processing result will be different before and after parallelization.
- variable R11-PCODE is a constraint key because the variable is an input-dependent variable and is used in the repetition condition of the loop statement in the file access logic control structure.
- the logical file division constraint generation step S305 the logical file division constraint is generated by analyzing the loop statement repetition condition in the file access logic.
- FIG. 27 shows a processing flow of logical file division constraint generation in step S2501.
- a loop statement in the file access control structure is specified as a processing target (S2701).
- the PERFORM statement on line 1910 is the processing target.
- variable dependency table 2100 input dependent variables included in the loop statement repetition conditional expression are identified (S2702), and the variable identifier and item identifier are output as constraint key variables (S2703).
- the variable R11-PCODE corresponds, so the dependent variable identified in S2702 is output as a constraint key variable for the corresponding logical file.
- step S305 logical file division constraint generation
- step S306 Physical file division constraint generation
- Step S306 is a physical file division constraint generation step.
- FIG. 28 shows the processing flow.
- the physical file division constraint generation process includes only step S2801 for generating physical file division constraint information 260.
- FIG. 29 shows an example 2900 of a physical file partitioning constraint table that stores physical file partitioning constraint information 250.
- a row of this table corresponds to an input file (physical file) of the parallelization target program 211. Since there is only one input file for the program P01 which is the parallelization target program of this embodiment, there is only one line.
- the column 2901 of the logical file partitioning constraint table 2900 is a physical file name.
- a column 2402 is an identifier of an item that becomes a constraint key in the division of the physical file.
- the constraint key item identifier of the physical file order details FILE is [9-13]. This is because when dividing the order details FILE, pay attention to the item of 5 byte length starting from the 9th byte of the record, and when the value of the item of the continuous record matches, the continuous record group is , Indicates that it is necessary to perform division so that the file exists even after division.
- the physical file partitioning constraint table 2900 is generated by converting the rows of the logical file partitioning constraint table 2600. Specifically, the physical file name corresponding to the logical file is identified from the logical file identifier in the row of the logical file partitioning constraint table, and stored in the column 2901. The correspondence between the logical file and the physical file is specified based on the physical file table 400. In addition, the contents of the item identifier column 2604 in the row of the logical file division constraint table are transferred to the item identifier column 2902 of the physical file.
- step S306 physical file division constraint generation.
- step S307 Physical file division template generation (S307)
- Step S307 is a physical file division template generation step.
- FIG. 30 shows the processing flow.
- a divided file name generation step S3001 a divided file name is generated from the multiplicity 213 and the physical file name to be divided.
- the division target physical file is the order details FILE and the multiplicity is 2.
- the names of the two physical files generated by the division are the order details FILE001 and the order details FILE002, respectively.
- Step S3002 in FIG. 30 generates a physical file division template.
- FIG. 31 shows a physical file division template table 3100 that stores physical file division template information 260. The row of this table corresponds to the file after division.
- the column 3101 of the physical file division template table 3101 is a division source physical file name.
- a column 3102 is a boundary item identifier.
- a column 3103 is a boundary item range constraint.
- a column 3104 is a file name after division.
- the boundary item identifier in the column 3102 is copied from the constraint key item identifier in the column 2902 of the physical file partitioning constraint table 2900.
- the value is “*”.
- the user of the parallelization design support system 100 refers to the physical file division template 3100 to efficiently design the input file division method when the parallelization target program 211 is parallelized by file division. Can do.
- the user knows that the file names after division may be the order details FILE001 and the order details FILE002, respectively.
- the order details FILE001 can be generated by dividing the source file at the location where the value of the record item [9-13] changes, and the order details FILE002 also changes the value of the record item [9-13] It can be seen that the division source file can be divided and generated at the place to be.
- the user includes the order item FILE001 including the records whose boundary items [9-13] are 11111 and 22222.
- the result of dividing the order details FILE so that the details FILE002 includes records whose boundary items [9-13] are 33333 and 44444 is shown.
- the parallelization target program handles two input files
- the first input file and the second input file need to be divided in consideration of mutual consistency. Also, it is necessary to consider the mutual consistency between the arrangement of the first input file after the division and the arrangement of the second input file after the division.
- FIG. 32 is a configuration diagram of the parallelization design support system 3200 of the present embodiment. Only differences from the parallelized design support system 100 in the first embodiment will be described. Instead of the logical file division constraint generation unit 105 in the parallelization design support system 100, the parallelization design support system 3200 includes a logical file division arrangement constraint generation unit 3201. Further, the parallelization design support system 3200 includes logical file division arrangement restriction information 3310 instead of the logical file division restriction information 240.
- the parallelization design support system 3200 of this embodiment includes a physical file partitioning arrangement constraint generation unit 3202. Further, the parallelization design support system 3200 includes physical file division arrangement restriction information 3320 instead of the physical file division restriction information 250.
- FIG. 33 shows various data configurations 3300 included in the parallelization design support system 3200.
- the difference from the data structure 200 of the parallelization design support system 100 in the first embodiment is as follows.
- the logical file division arrangement constraint information 3310 includes logical file arrangement restriction information 3311 in addition to the logical file division restriction information 240.
- the physical file division arrangement constraint information 3320 includes physical file arrangement restriction information 3321 in addition to the physical file division restriction information 250.
- Step S301 input information registration
- step S302 program syntax / dependency analysis
- step S303 file access logic generation
- step S304 parallellism determination
- the input information in the present embodiment will be described.
- the parallelization target program 3301 is the program P02.
- An example of a table storing the physical file information 3302 is shown in a table 3500 in FIG.
- the program P02 receives two files, a total FILE and a warehouse FILE, and uses a shipping instruction FILE as an output file. These physical files are accessed as logical files F21, F22, and F23, respectively, in the program P02.
- the total FILE is the same as that output by the program P01 in the first embodiment, but this point will be described in the third embodiment.
- FIG. 36 shows an example of an outline of processing performed by the program P02.
- each record of the aggregation FILE represents the order quantity of the product specified by the product code.
- Each record of the warehouse FILE represents a product code of a product stored in the warehouse specified by the warehouse code.
- the business process performed by program P02 is a shipping instruction.
- a delivery instruction FILE which is a file used to instruct the goods to be delivered and their quantity, is output.
- Each record of the delivery instruction FILE indicates that the product specified by the product code should be delivered to the warehouse specified by the warehouse code, and the quantity thereof.
- FIG. 37 shows the result of parallelizing the program P02 for performing the above processing with multiplicity 2 by file division.
- the physical file division arrangement program 3740 divides the input file 3710 into a divided file 3711 and a divided file 3712. Further, the physical file division arrangement program 3740 divides the input file 3720 into a divided file 3721 and a divided file 3722.
- the physical file division arrangement program 3740 arranges the post-division file 3711 and the post-division file 3721 on the parallel execution server 3760. Further, the physical file division arrangement program 3740 arranges the divided file 3712 and the divided file 3722 in the parallel execution server 3770.
- the parallel execution server 3760 executes the same program 3780 as the program P02, using the divided file 3711 and the divided file 3721 as input files.
- the program 3780 outputs an output file 3731.
- the parallel execution server 3770 executes the same program 3790 as the program P02, using the divided file 3712 and the divided file 3722 as input files.
- the program 3790 outputs an output file 3732.
- the physical file merge program 3750 receives the output file 3731 and the output file 3732 as input, and outputs a file 3730 obtained by merging them.
- the input file 3710 is the same as the aggregate FILE 3610, and the input file 3720 is the same as the warehouse FILE 3620.
- the program 3780 and the program 3790 are the same as the program P02, and the output file 3730 is the same as the shipping instruction FILE 3630.
- This embodiment describes a parallelization design support system 3200 that supports the design of the physical file division arrangement program 3740 by outputting the physical file division arrangement template information 3330.
- FIG. 38 shows the data part 3801 of the parallelization target program 3301.
- FIG. 39 schematically shows a part related to a file in the description content of the data part 3801.
- Program syntax and dependency analysis S302
- the following is an example of information output by the parallelization design support system 3200 of the present embodiment as the execution result of step S302 (program syntax / dependency analysis).
- FIG. 40 is an example 4000 of a file record identification table stored in the file record identification information 3303.
- FIG. 41 is an example 4100 of a command statement table stored in the command information 3304.
- FIG. 42 is an example 4200 of the control dependence table stored in the control dependence information 3305. These are shown to aid understanding of this example.
- (3) File access logic generation (S303) The following is an example of information output by the parallelization design support system 3200 of this embodiment as the execution result of step S303 (file access logic generation).
- FIG. 43 is an example 4300 of a file access control structure table stored in the file access control structure information 3306.
- FIG. 44 is an example 4400 of a variable dependency table stored in the variable dependency information 3307.
- Parallelism determination (S304) The determination result in the present embodiment in step S304 (parallelism determination) is “can be parallelized”.
- Step S3405 is a logical file division arrangement restriction step.
- FIG. 45 shows a processing flow.
- S2501 (logical file division constraint generation) is the same as the step in the first embodiment.
- FIG. 46 shows a logical file partitioning constraint table 4600 stored in the logical file partitioning constraint information 240 that is the output of S2501. There is no constraint key variable for the logical files F21 and F22, which indicates that the logical file can be divided at any record boundary.
- FIG. 47 shows an example 4700 of a logical file placement constraint table that stores the logical file placement constraint information 3311 that is the output of this step. Each row in this table represents an arrangement constraint that exists between two input files.
- the column 4701 of the logical file arrangement constraint table 4700 is a program identifier.
- Column 4702 and column 4705 are logical file identifiers. Two logical files corresponding to the line are specified.
- a column 4703 is an identifier of a constraint key variable for the logical file identified in the column 4702.
- a column 4706 is an identifier of a constraint key variable for the logical file identified in the column 4705.
- a column 4704 is a condition for comparing the values of the constraint key variables of the two logical files.
- the identifiers “1” and “2” correspond to the logical files F21 and F22, respectively.
- the contents of the logical file placement constraint table 4700 are only the row 4710. This means that when the divided files of logical file F21 and logical file F22 are placed, the parts with the same record item values corresponding to the respective constraint key variables must be placed on the same parallel execution server. Indicates.
- the contents of the row 4710 are the product code of the aggregate FILE (corresponding to the logical file F21) (corresponding to the constraint key variable R21-PCODE) and the product of the warehouse file (corresponding to the logical file F22).
- the portion where the code (corresponding to the constraint key variable R22-PCODE) matches indicates that it must be placed on the same parallel execution server.
- the arrangement of the divided files that do not satisfy the logical file arrangement constraint causes a mismatch between the processing results of the parallelized target program 3301 before and after the parallelization. For example, in FIG. 37, when the second record of the post-division file 3711 is moved to the beginning of the post-division 3712, the issue instruction for the product with the product code 22222 is not output.
- FIG. 48 is a processing flow of logical file placement constraint generation step S4502.
- a WRITE statement is specified based on the file access control structure table 4300 (S4801).
- a branch instruction statement including the WRITE statement in the scope is specified, and the branch condition is identified (S4802).
- command statement 15 is within the scope of branch command statement 11 (IF).
- the branch condition is identified based on a conditional syntax tree that is an output of the program syntax / dependency analysis step.
- the branch condition is a comparison between two dependent variables related to two logical files (S4803).
- the variable R21-PCODE is an input dependent variable of the logical file F21
- the variable R22-PCODE is an input dependent variable of the logical file F22.
- the dependency of the variable is confirmed based on the variable dependency table 4400.
- the branch condition is converted into a logical file placement constraint (S4804).
- FIG. 49 shows an example when the logical file division arrangement constraint information 3210 generated in this step is output to the output device.
- a logical file and a partitioning constraint for the logical file are expressed by nodes, and an arrangement constraint between logical files is expressed by an edge.
- Node 4910 corresponds to logical file F21.
- Node 4920 corresponds to logical file F22.
- An edge 4930 corresponds to an arrangement constraint between the logical file F21 and the logical file F22.
- FIG. 50 shows a processing flow.
- S5001 physical file division constraint generation
- FIG. 51 shows an example 5100 of a physical file partitioning constraint table stored in the physical file partitioning constraint information 250 that is the output of S2801.
- S5002 is a physical file arrangement constraint generation step.
- FIG. 52 shows an example 5200 of a physical file placement constraint table that stores physical file placement constraint information 3321, which is the output of this step. Each row in this table represents an arrangement constraint that exists between two input files.
- the column 5201 and the column 5204 of the physical file arrangement restriction table 5200 are physical file names. Two physical files corresponding to the line are specified.
- a column 5202 is an identifier of a constraint key item for the physical file specified in the column 5201.
- a column 5205 is an identifier of a constraint key item for the physical file identified in the column 5204.
- a column 5203 is a condition for comparing the values of the constraint key items of the two physical files.
- FIG. 53 shows an expression example when the logical file division arrangement constraint information 3220 generated in this step is output to the output device.
- the physical file and the partitioning constraint for the physical file are represented by nodes, and the placement constraint between the physical files is represented by edges.
- Node 5310 corresponds to the aggregate FILE.
- Node 5320 corresponds to warehouse FILE.
- the edge 5330 corresponds to the arrangement constraint between the two.
- the parallelization design support system 3200 outputs the physical file partition arrangement restriction information 3220, so that the user of the parallelization design support system 3200 parallelizes the parallelization target program 3301. This makes it possible to more efficiently understand the partitioning constraints and the placement constraints.
- step S3406 physical file division arrangement constraint generation.
- step S3407 Physical file division arrangement template generation (S3407) Next, the physical file division arrangement template generation step of step S3407 will be described.
- Step S3407 is a physical file division arrangement template generation step.
- FIG. 54 shows a processing flow.
- S3001 file name generation after division
- the total FILE is divided into total FILE001 and total FILE002
- the warehouse FILE is divided into warehouse FILE001 and warehouse FILE002.
- Step S5402 is physical file division template generation.
- the processing content of this step is different from step S3002 of the same name in the first embodiment.
- An output example of this step is shown in FIG.
- FIG. 55 shows a physical file division template 5500 that stores physical file division template information 261.
- the definition of each column is the same as in Example 1.
- the physical file division template 5500 in FIG. 55 stores information indicating the division method of the aggregate FILE and the warehouse FILE.
- the order of the lines corresponds to the generation order of the post-partition FILE.
- Lines 5510 and 5520 are information for instructing to first divide the aggregate FILE and generate aggregate FILE001 and aggregate FILE002. In that case, a change point of the value of the item [1-5] of the total FILE is used as a boundary (column 5502).
- lines 5520 and 5530 are information instructing to divide the warehouse FILE and generate the warehouse FILE001 and the warehouse FILE002.
- the division of the warehouse FILE uses the item [9-13] as the boundary (column 5502), and the warehouse FILE001 has the value range of the item [9-13] as the item [1-5] of the aggregate FILE001. ] Is included in the range (boundary item range constraint in column 5503).
- FIG. 56 shows a processing flow of step S5402 (physical file division template generation).
- the first division source file is determined from among a plurality of input files, and the division rule for the corresponding post-division file is output (S5601).
- the first division source file may be arbitrarily determined, or may be obtained from a user of the parallelization design support system 3200 via an input device.
- the division rule is output according to the following procedure.
- the restriction key item related to the division source file is acquired from the physical file division restriction table 5100 and the physical file arrangement restriction table 5200. If the constraint key items match, the identifier of the constraint key item is output to the boundary item identifier (column 5502). If one of the constraint key items is “*”, the identifier of the other constraint key item is output as the value in the column 5502.
- the constraint key item identifier of the aggregate FILE is “*” from the partitioning constraint and [1-5] from the placement constraint. Therefore, the latter is output. This is performed on the two divided files of the total file.
- a file having an arrangement constraint with the processed division source file is identified and set as the next processing target division source file (S5602).
- a correspondence relationship is established between the post-division file generated from the division target division source file and the post-division file generated from the processed division source file.
- the next processing target split source file is a warehouse FILE.
- the warehouse FILE002 is made to correspond to the total FILE002.
- the division rule for the processing target file is output.
- the division source file of the processing target file has an arrangement restriction with the division source file of the processed file.
- the restriction key item identifier of the process target division source file is acquired from the arrangement restriction.
- the boundary item range constraint (column 5503) is a boundary identifier of the divided file having the correspondence.
- the warehouse FILE which is the division source file of the warehouse FILE001, has an arrangement constraint with the aggregation FILE that is the division source file of the aggregation FILE001 having a correspondence relationship.
- the restriction key item identifier [9-13] is acquired. It is confirmed that the division constraint of the aggregate FILE is “*”, and [9-13] is set as the boundary item identifier (column 5502 in the row 5530).
- the boundary item range restriction (column 5503) in the row 5530 is a boundary item (column 5502 in the row 5510) of the aggregate FILE001 that is a processed file corresponding to the warehouse FILE001. This is set as “aggregation FILE001. [1-5]” and is defined as a boundary item range constraint (column 5503 in row 5530).
- Steps S5602 and S5603 are repeated for all input files (S5604).
- the above is the description of the processing flow in step S5402 (physical file division template generation).
- Step 5403 is a physical file arrangement template generation. An output example of this step is shown in FIG.
- FIG. 57 shows an example 5700 of physical file arrangement template information 3231.
- a column 5701 is a node name of a placement destination (a parallel execution server name.
- a column 5702 is a file name after division to be placed.
- Lines 5710 and 5720 are information for instructing to place the aggregate FILE001 and the warehouse FILE001 in the same node (node 1).
- line 5730 and line 5740 are information for instructing to place the aggregate FILE002 and warehouse FILE002 in the same node (node 2).
- the generation procedure of the physical file arrangement template 5700 is as follows. Each line of the physical file division template 5500 is confirmed, and a line whose boundary item range constraint (column 5503) is other than “*” is identified. If there is such a line, the line of the physical file arrangement template is output so that the divided file (column 5504) of the line and the divided file appearing in the boundary item range constraint are arranged in the same node.
- the line 5530 satisfies the above condition.
- the aggregate FILE001 and the warehouse FILE001 should be arranged in the same node, so the lines 5710 and 5720 of the physical file arrangement template 5700 are output.
- the parallelization design support system 3200 Based on the physical file division template 5500 and the physical file arrangement template 5700, the user of the system 3200 efficiently designs the input file division method and arrangement method when the parallel target program 3301 is parallelized by file division. can do.
- the user may consider divisional files when the divided files of the aggregated FILE are aggregated FILE001 and aggregated FILE002, and the divided files of the warehouse FILE are the warehouse FILE001 and warehouse FILE002. Can be known efficiently. In other words, it can be seen that when the total FILE is divided, the division should be performed at a place where the value of the item [1-5] changes. In addition, when the warehouse FILE is divided, it is understood that the division should be performed at a place where the value of the item [9-13] changes.
- the range of the item [9-13] of the warehouse FILE001 should include the range of the item [1-5] of the aggregate FILE001.
- the range of the item [9-13] of the warehouse FILE002 should include the range of the item [1-5] of the aggregate FILE002.
- the user can efficiently know the conditions to be observed when the divided file group is arranged by referring to the physical file arrangement template 5700. For example, it can be seen that the aggregate FILE001 and the warehouse FILE001 should be arranged on the same node, and the aggregate FILE002 and the warehouse FILE002 should be arranged on the same node.
- the user can efficiently perform the design act for realizing the parallelization shown in FIG.
- the block diagram of the parallelization design support system according to this embodiment is the same as the block diagram 32 according to the second embodiment, and a description thereof will be omitted.
- FIG. 58 shows a configuration 5800 of various data provided in the parallelization design support system of this embodiment.
- the difference from the data configuration 3300 of the parallelization design support system 3200 in the second embodiment is as follows.
- the physical file division arrangement restriction information 5810 includes pre-combination physical file division restriction information 5820, pre-combination physical file arrangement restriction information 5830, post-combination physical file division restriction information 5840, and post-combination physical file arrangement restriction 5850. .
- the parallelization target program 5861 includes a plurality of programs.
- the program P01 used in the first embodiment and the program P02 used in the second embodiment are set as the parallelization target program 5861.
- FIG. 59 shows an example 5900 of a physical file table that stores physical file information 5862. As shown in the figure, this table includes the contents of the table 400 in the first embodiment and the table 3500 in the second embodiment.
- the program P01 receives the order details FILE as input (line 5910) and outputs the total FILE (line 5920).
- the program P02 receives the total FILE and the warehouse FILE (lines 5930 and 5940) and outputs the shipping instruction FILE (line 5950).
- FIG. 60 shows the range of parallelization in this embodiment.
- the parallelization range 6010 includes a program 6020 (P01) and a program 6030 (P02).
- a file 6040 output by the program 6020 and input by the program 6030 is an intermediate file in the parallelization range 6010.
- the input of the parallelization range 6010 is a file “Order Details FILE” 6050 and a file “Warehouse FILE” 6060.
- the output of the parallelization range 6010 is a file 6070.
- FIG. 61 shows the result of parallelizing the parallelization range 6010 at a multiplicity of 2 by file division.
- the physical file division arrangement program 6170 divides the input file 6050 into a divided file “Order Details FILE001” 6111 and a divided file “Order Details FILE002” 6112, and places them on the parallel execution server 6191 and the parallel execution server 6192, respectively.
- the physical file division arrangement program 6170 divides the input file 6060 into a divided file “warehouse FILE001” 6121 and a divided file “warehouse FILE002” 6122, which are arranged in the parallel execution server 6191 and the parallel execution server 6192, respectively.
- the parallel execution server 6191 executes the same program 6131 as the program P01 using the divided file 6111 and the divided file 6121 as input files.
- the program (P01) 6131 outputs an intermediate file (total FILE) 6141.
- the parallel execution server 6191 executes the same program 6151 as the program P02 using the intermediate file 6141 as an input file.
- the program 6151 outputs an output file “shipping instruction FILE” 6161.
- the parallel execution server 6192 executes the same program 6132 as the program P01 with the divided file 6112 and the divided file 6122 as input files.
- the program 6132 outputs an intermediate file (total FILE) 6142.
- the parallel execution server 6192 executes the same program 6152 as the program P02 using the intermediate file 6142 as an input file.
- the program 6152 outputs an output file “shipping instruction FILE” 6162.
- the physical file merge program 6180 receives the output file 6161 and the output file 6162, and outputs a file 6070 obtained by merging them.
- parallel execution of the parallelization range 6010 can be realized without modifying the program in the parallelization range 6010.
- a design act based on knowledge of the operations of the program 6020 and the program 6030 in the parallelization range 6010 is necessary.
- This embodiment describes the parallelization design support system that supports the design of the physical file division arrangement program 6170 by outputting the physical file division arrangement template information 5850.
- Step S6201 is an input information registration process. Except that the parallelization target program 5761 is composed of two programs, it is the same as the input information registration processing S301 in the first embodiment.
- Program syntax / dependency analysis (S6202) Step S6202 is a program syntax analysis / dependency analysis process. The program syntax analysis / dependency analysis S302 in the first embodiment is executed for each program constituting the parallelization target program 5761.
- File access logic generation (S6203) Step S6203 is a file access logic generation process.
- the file access logic generation process S303 in the first embodiment is executed for each program constituting the parallelization target program 5761.
- Parallelism determination (S6204) is a parallelism determination process.
- the parallelism determination process S304 in the first embodiment is executed for each program constituting the parallelization target program 5761.
- Logical file division arrangement constraint generation (S6205) Step S6205 is logical file division arrangement constraint generation processing. For each program constituting the parallelization target program 5761, the logical file arrangement constraint generation processing S3405 in the second embodiment is executed.
- FIG. 63 shows an example 6300 of a logical file partitioning constraint table that stores logical file partitioning constraint information 5860.
- a row 6310 is the same as the row 2610 of the table 2600 in the first embodiment.
- Row 6320 and row 6330 are the same as row 4610 and row 4620 of the table 4600 in the second embodiment.
- FIG. 64 shows an example 6400 of a logical file placement constraint table that stores logical file placement constraint information 5870.
- a row 6410 is the same as the row 4710 of the same table 4700 in the second embodiment.
- Step 6206 is a physical file division arrangement
- FIG. 65 shows a processing flow of the physical file division arrangement constraint generation step 6206 of the present embodiment.
- Step S6501 is a pre-synthesis physical file division constraint generation step.
- the physical file division constraint generation step S2801 of the second embodiment is executed for each program constituting the parallelization target program 5761.
- FIG. 66 is an example 6600 of a pre-combination physical file partitioning constraint table stored in the pre-combination physical file partitioning constraint information 5820, which is the output of the pre-combination physical file partitioning constraint generation step S6501.
- a row 6610 is the same as the row 2910 of the physical file division constraint table 2900 in the first embodiment.
- the rows 6620 and 6630 are the same as the rows 5110 and 5120 of the physical file partitioning constraint table 5100 in the second embodiment, respectively.
- Step S6502 is a pre-synthesis physical file arrangement constraint generation step.
- the physical file arrangement constraint generation step S5002 of the second embodiment is executed for each program constituting the parallelization target program 5761.
- FIG. 67 shows an example 6700 of a pre-synthesis physical file arrangement constraint table, which is an output of the pre-synthesis physical file arrangement constraint generation step S6502.
- a row 6710 is the same as the row 4710 of the physical file arrangement constraint table 4700 in the second embodiment.
- Step S6503 is a synthesis method determination step. This is a constraint on the parallelization range 5910 by synthesizing the pre-combination physical file division constraint information 5820 and the pre-combination physical file placement constraint information 5830 generated by processing each program constituting the parallelization target program 5761 separately. Then, a method of generating the post-synthesis physical file division constraint information 5840 and the post-synthesis physical file placement constraint information 5850 is determined.
- FIG. 68 shows a processing flow of the synthesis method determination step in S6503.
- the pre-composition physical file division constraint for the intermediate file 5940 is identified (S6801).
- the intermediate file 5940 is a total file.
- the pre-combination physical file division constraint table 6600 is referenced to identify the pre-combination physical file division constraint “*” for the file.
- a synthesis method is determined based on the physical file division constraint before synthesis (S6802).
- the constraint is “*”. This indicates that there is no partitioning constraint in the parallelization of the program P02 (the partitioning may be performed anywhere as long as it is a record boundary). There is no problem even if the intermediate file 6041 and the intermediate file 6042 output by the program P01 have any division result of the total file. Therefore, it is determined that composition is possible.
- the combining method is determined as “placement constraint conversion”.
- Step S6504 is a physical file division constraint synthesis step. An output example of this step is shown in FIG.
- FIG. 69 shows a post-synthesis physical file division constraint table 6900 that stores post-synthesis physical file division constraint information 5840. This table shows division restrictions on the input file 5950 and the input file 5960 in the parallelization range 5910 on the lines 6910 and 6920, respectively.
- post-synthesis physical file division constraint information 5840 is generated from pre-synthesis physical file division constraint information 5720 according to the synthesis method determined in step 6503.
- the processing method when the synthesis method is “placement constraint conversion” will be described using an example.
- the row corresponding to the input file in the parallelization range 5910 in the physical file division constraint table 6600 before synthesis is transferred to the physical file division constraint table 6900 after synthesis.
- lines corresponding to the order details FILE and the warehouse FILE are posted.
- Step 6505 is a physical file arrangement constraint synthesis step. An output example of this step is shown in FIG.
- FIG. 70 is a post-synthesis physical file arrangement constraint table 7000 that stores post-synthesis physical file arrangement constraint information 5850.
- the input file 5950 in the parallelization range 5910 and the arrangement constraints for the input file 5960 are shown in a row 7010.
- post-synthesis physical file arrangement constraint information 5750 is generated from pre-synthesis physical file arrangement constraint information 5830 according to the synthesis method determined in step 6503.
- the processing flow is shown in FIG.
- FIG. 71 shows an outline of processing when the composition method is “placement constraint conversion”.
- An expression example 7110 is an expression example of the pre-combination physical file division constraint information 5820 and the pre-combination physical file placement constraint information 5830.
- An expression example 7120 is an expression example of the combined physical file division constraint information 5840 and the combined physical file placement constraint information 5850.
- the expression example 7120 represents three physical files and their partitioning restrictions by a node 7111, a node 7112, and a node 7113.
- the arrangement constraint is expressed by an edge 7114.
- Display example 7120 is an output example of post-synthesis physical file placement constraint information 7000.
- a division constraint for two input files for the parallelization range 6010 is expressed by a node 7121 and a node 7122.
- the placement constraint is expressed by an edge 7124.
- a node 7122 represents an intermediate file in the parallelization range 6010.
- FIG. 72 shows a processing flow of the physical file placement constraint synthesis step (S6505) when the synthesis method is “placement constraint conversion”.
- a placement constraint that uses the constraint key item of the intermediate file is identified (S7201).
- the arrangement constraint in the row 6710 of the table 6700 corresponds.
- the intermediate file and constraint key item used are [1-5] of the total file.
- the output dependent variable storing the value of the constraint key item is identified (S7202).
- the variable R12-PCODE of the program P01. This can be identified based on the file record identification table 1000 related to the program P01.
- step S7203 the input logical file item on which the output dependent variable depends indirectly is identified.
- the method for identifying indirect dependency is the same as that in step S1703 in the first embodiment.
- the variable R12-PCODE indirectly depends on the item [9-13] of the logical file F11.
- FIG. 73 shows indirect dependency identification results using a configuration similar to that in FIG.
- step S7204 the input logical file item is converted into a physical file item. In the example, it is converted to “Order Details File. [9-13]”. This is because the logical file F11 in the program P01 corresponds to the total FILE.
- step S7205 the constraint key item for the intermediate file in the constraint is replaced with the physical file item identified in step S7204 (S7205).
- row 7010 in FIG. 7000 corresponds to the result.
- this corresponds to an operation of rewriting the placement constraint edge 7114 before composition as the placement constraint edge 7124 after composition.
- Both of these are aggregate FILE. [1-5] is replaced with the order details FILE. This is the result of replacement with [9-13].
- the post-synthesis physical file placement constraint table 7000 is output according to the above processing flow.
- the above is description of step S6505 of a present Example.
- Step S6207 is a physical file division arrangement template generation step. This step is the same as step S3407 in the second embodiment.
- FIG. 74 and 75 show examples of the output result of step 6207.
- FIG. 74 shows an example 7400 of a physical file division template stored in the physical file division template information 5880.
- FIG. 75 shows an example 7500 of a physical file arrangement template stored in the physical file arrangement template information 5890.
- the user of the parallelization design support system of the present embodiment can efficiently perform the design act for realizing the parallelization shown in FIG. 60 by referring to the physical file division arrangement template information 5750.
- Parallelization design support system 110 Storage device 120: Memory 130: CPU 140: Communication port 150: Parallelization design support program 160: Input device 170: Output device 101: Input information registration unit 102: Program syntax / dependency analysis unit 103: File access logic generation unit 104: Parallelism determination unit 105: Logic File division constraint generation unit 106: Physical file division constraint generation unit 107: Physical file division template generation unit 210: Input information 220: Program syntax / dependency information 230: File access logic information 240: Logical file division constraint information 250: Physical file Division constraint information 260: Physical file division template information
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
データ処理プログラムの解析に基づき、グリッドコンピューティング環境におけるデータ 処理プログラムの並列実行を実現するための並列化設計を支援する。並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を受付けて、前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成し、前記プログラム構文・依存性解析情報に基づき、ファイルアクセスロジック情報を生成し、前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定し、前記情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成し、前記ファイル分割制約情報と、前記多重度に基づいて、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する。
Description
本発明は、コンピュータプログラムを並列実行するための設計支援システム、設計支援プログラム、および設計支援方法に関する。
情報技術の進展と社会環境の変化にともない、企業や官公庁などが取り扱うデータ量の増大が著しい。それに伴い、企業などでは、大量データを処理する基幹システムのデータ処理の長時間化が課題となっている。データ処理をより高速に行う方法として、例えば、データ処理をグリッドコンピューティング環境において並列実行する方法がある。
例えば前記特許文献1には、グリッドコンピューティング環境を管理するための方法、システムおよびプログラムが記載されているが、既存のデータ処理プログラムをグリッドコンピューティング環境へ移行するための方法が考慮されていない。特に、データ処理プログラムの改造には多くのコストが必要となるため、データ処理プログラムを極力改造せずに、処理対象データのみを分割することで並列化を実現することが望ましいが、そのような並列化設計方法が考慮されていない。
そこで、本発明は、データ処理プログラムの解析に基づき、前記データ処理プログラムの並列化を実現するためのデータの分割配置方法を指定する情報を生成することで、グリッドコンピューティング環境における前記既存のデータ処理プログラムの並列実行を実現するための並列化設計を支援するシステム、プログラム、および方法を提供することを目的とする。
上記目的を達成するために、例えば以下に記載の構成を採用する。
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるとするならば、プログラムの並列化を実現するためのデータ分割配置方法の設計を支援するコンピュータシステムであって、並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録する入力情報登録部と、前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析部と、前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成部と、前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定部と、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成部と、前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成部と、を備えることを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援するコンピュータシステム。
本発明によれば、既存のデータ処理プログラムを、グリッドコンピューティング環境に移行し並列実行させるための、データの分割配置方法の設計を効率的に行うことができる。
上記以外の課題、構成、および効果は、以下の実施形態の説明により明らかにされる。
以下に本発明の実施形態について図面を用いて詳細に説明する。図1は、本実施形態の並列化設計支援システム100の構成図である。図1に示す並列化設計支援システム100(以下、システム100)は、プログラムを並列化するために必要な設計作業を効率化するコンピュータシステムである。前記システム100は例えばサーバなどのコンピュータ装置であり、ハードディスクドライブなどの記憶装置110、RAMなどの揮発性記憶手段であるメモリ120、CPU130、通信ポート140らがBUSにより互いに接続されて構成されている。
前記システム100は、前記CPU130が、ハードディスクドライブなどの前記記憶装置110に格納されたプログラム150を、RAMなどの揮発性のメモリ120に読み出して実行することで、各種機能を実現している。また、前記システム100は、コンピュータ装置が一般に備えている各種キーボードやボタン類などの入力装置160、ディスプレイ、スピーカー、プリンタなどの出力装置170を必要に応じて備える。また前記システム100は、他装置との間のデータ授受を担うNIC(Network Interface Card)など通信ポート140を有し、所定の管理者等が利用する端末などとネットワークを介して通信可能となっていてもよい。
前記システム100は、他の情報処理装置からネットワークを介して送信される前記プログラム150を前記通信ポート140で受信し、これをメモリ120や記憶装置110に記憶するとしてもよい。また、入力情報210など前記プログラム150の処理において使用するデータを別の情報処理装置に格納しておき、前記システム100が前記通信ポート140を通じて前記情報処理装置から受信して前記プログラム150の処理に利用することもできる。
以下に、前記システム100が、プログラム150の構成要素として持つ機能部と、各機能部への入力または出力となる各種データの構成の説明を行う。各種データの構成は図2に示している。
前記システム100は、プログラム150への入力情報210を、入力装置160で受付けて記憶装置110に登録する入力情報登録部101を備えている。入力情報210は、並列化対象プログラム211と、前記並列化対象プログラム211の入力または出力となる物理ファイルの情報212と、並列化後の同時実行数である多重度213から構成される。本実施例では並列化対象プログラム211は1本のプログラムであるが、複数であってもよい。
また前記システム100は、前記登録された前記並列化対象プログラム211の構文解析と、依存性解析を行い、その結果をプログラム構文・依存性情報220に出力するプログラム構文・依存性解析部102を備えている。構文解析・依存性解析は、例えばコンパイラの実現において適用されている技術である。前記プログラム構文・依存性情報220は、前記並列化対象プログラム211がファイル入出力処理に用いる変数を識別するファイルレコード識別情報221と、前記並列化対象プログラム211を構成する命令文を識別する命令文情報222と、前記並列化対象プログラム211の命令文が行う変数の参照と変数の更新を識別する変数参照更新情報223と、前記並列化対象プログラム211に含まれる分岐命令文の分岐条件とループ命令文の繰り返し条件の構造である条件構文木224と、命令文の間の制御依存関係を格納する制御依存性情報225と、変数の間のデータ依存関係を格納するデータ依存性情報226から構成される。
また、前記システム100は、前記プログラム構文・依存性情報220に基づいて、前記並列化対象プログラム211の、ファイル入出力に関する骨子を表す情報である、ファイルアクセスロジックの情報230を出力するファイルアクセスロジック生成部103を備える。前記ファイルアクセスロジック情報230は、ファイル入出力の実行の有無や実行回数や実行順序に影響する分岐命令文やループ命令文から構成するファイルアクセス制御構造情報231と、前記ファイルアクセス制御構造情報231の中で使用されている変数が持つ、入出力ファイルへの依存関係に関する、変数依存性情報232から構成される。
また、前記システム100は、前記ファイルアクセスロジック情報230に基づいて、前記並列化対象プログラム211に対し、入力ファイルの分割による並列化の可否を判定する並列性判定部104を備える。入力ファイルの分割による並列化については後述する。
ここで、物理ファイルとは、例えばオペレーティングシステム上で、一つの単位として認識され、物理ファイル名を与えられている、データの塊を指す。論理ファイルとは、プログラムの中で、処理単位として論理的に扱われるデータの塊を指す。例えば、2つの異なるプログラムが、同一の物理ファイルを、異なる論理ファイルとして記述することが可能である。
また、前記システム100は、前記プログラム構文・依存性情報220と、前記ファイルアクセスロジック情報230に基づいて、前記並列化対象プログラム211を並列化するためのファイル分割方法が満たすべき制約を、前記並列化対象プログラム211の入出力ファイルの、プログラム内の表現である論理ファイルに対して記述する、論理ファイル分割制約情報240を出力する論理ファイル分割制約生成部105を備える。
また、前記システム100は、前記論理ファイル分割制約情報240と入力情報210に含まれる前記物理ファイル情報212に基づいて、物理ファイルの分割方法が満たすべき制約情報250を出力する、物理ファイル分割制約生成部106を備える。
また、前記システム100は、前記物理ファイル分割制約情報250と入力情報210に含まれる前記多重度213に基づいて、前記物理ファイル分割制約を満たす、物理ファイル分割方法のテンプレート260を出力する、物理ファイル分割テンプレート生成部107を備える。
これまでに示した前記システム100における各機能部101から107はハードウェアとして実現してもよいし、メモリやハードディスクドライブなどによって実現する記憶装置110に格納したプログラム150として実現するとしてもよい。この場合、CPU130など制御装置がプログラム実行に合わせて記憶装置160より該当プログラムを読み出して、これを実行することとなる。
以下、本実施形態における並列化設計支援方法の実施手順について、図3の全体処理フローに従い、図3から図31を用いながら説明する。以下で説明する各種動作は、前記システム100のCPU130がメモリ120に読み出して実行するプログラム150によって実現される。前記プログラム150は、以下に説明する各種の動作を行うためのプログラムコードから構成されている。
(1)入力情報登録(S301)
図3のステップS301は、入力情報登録ステップである。前記入力情報登録部101は、並列化対象プログラム211と、物理ファイル情報212と、多重度213を、入力装置160で受付けて記憶装置110に登録する。本実施例では、並列化対象プログラムはCOBOL(商標)プログラミング言語で記述されたプログラムであり、その識別子はP01であるとし、並列化対象プログラム211はプログラムP01のソースコード全体であるとする。プログラムP01の具体的な内容は後述する。前記物理ファイル情報212の例は図4に示し、後述する。前記多重度213は、2であるとする。
(1)入力情報登録(S301)
図3のステップS301は、入力情報登録ステップである。前記入力情報登録部101は、並列化対象プログラム211と、物理ファイル情報212と、多重度213を、入力装置160で受付けて記憶装置110に登録する。本実施例では、並列化対象プログラムはCOBOL(商標)プログラミング言語で記述されたプログラムであり、その識別子はP01であるとし、並列化対象プログラム211はプログラムP01のソースコード全体であるとする。プログラムP01の具体的な内容は後述する。前記物理ファイル情報212の例は図4に示し、後述する。前記多重度213は、2であるとする。
図4は、前記物理ファイル情報212を格納した物理ファイルテーブルの例400である。行410は、プログラムP01が入力とする物理ファイルの名称は「受注明細FILE」であり、プログラムP01の内部では論理ファイルF11として識別されることを示す。行420は、プログラムP01が出力する物理ファイルの名称は「集計FILE」であり、プログラムP01の内部では論理ファイルF12として識別されることを示す。
図5は、プログラムP01が行う処理例の概要である。入力ファイル510(受注明細FILE)と出力ファイル520(集計FILE)は、それぞれ固定長のレコードの羅列である。受注明細FILE510の各レコードは明細ID511と商品コード512と数量513の3つの項目から構成される。各項目の長さ(バイト数)はファイルの定義の一部であり、レコード間で共通である。受注明細FILEの各レコードは、商品コードで特定される商品が、明細IDで特定される取引において受注された数量を格納している。
続いて図5の出力ファイル520について説明する。出力ファイル520の各レコードは商品コード521と数量522の、2つの項目から構成される。各項目の長さ(バイト数)はファイルの定義の一部であり、レコード間で共通である。集計FILEの各レコードは、商品コード521で特定される商品が受注された数量の合計が数量522であることを示している。
続いて図5のプログラムP01について説明する。プログラムP01は受注明細FILEを入力ファイルとし、集計FILEを出力ファイルとするプログラムである。本実施例では、プログラムP01が行う入力ファイルへのアクセス形態は、逐次読み込みとする。プログラムP01が行う出力ファイルへのアクセス形態は、逐次書き出しとする。プログラムP01は、受注明細FILE510の冒頭から順次そのレコードを読み込む。同一の商品コード512を持つレコードを全て読み込んだと判断した時点で、数量513の値を合計し、集計FILE520に、当該商品コードに対応する商品の合計受注数量を書き出す。
例えば、受注明細FILEの冒頭の3件のレコード514を読み込んだ時点で、商品コード11111に関するレコードを全て読み込み済みと判定し、集計FILE520にレコード523を書き出す。次にレコード515を読み込み、商品コード22222に関するレコードを全て読み込み済みと判定し、レコード524を書き出す。
図6は、前記の処理を行うプログラムP01をファイル分割によって多重度2で並列化した結果を示す。入力ファイル610を、物理ファイル分割配置プログラム630が、分割後ファイル611と分割後ファイル622に分割し、それぞれ並列実行サーバ650と並列実行サーバ660に配置する。
並列実行サーバ650は、プログラムP01と同じプログラム670を、分割後ファイル611を入力ファイルとして実行する。プログラム670は、出力ファイル621を出力する。並列実行サーバ660は、プログラムP01と同じプログラム680を、分割後ファイル612を入力ファイルとして実行する。プログラム680は、出力ファイル622を出力する。
物理ファイルマージプログラム640は、出力ファイル621と出力ファイル622を入力とし、それらをマージしたファイル620を出力する。ここで、入力ファイル610は受注明細FILE510と同一であり、プログラム670とプログラム680はプログラムP01と同一であり、出力ファイル620は集計FILE520と同一である。このような物理ファイル分割配置プログラム630と物理ファイルマージプログラム640を実現することで、プログラムP01を改変することなく、プログラムP01の並列実行を実現できる。
本実施例は、物理ファイル分割テンプレート情報260を出力することで、プログラムの作成者によって作成される物理ファイル分割配置プログラム630及び物理ファイルマージプログラム640の設計を支援する、前記並列化設計支援システム100を説明する。
図7は、並列化対象プログラム211の構成である。COBOL言語の構文に従い、プログラムは、見出し部701と環境部702とデータ部703と手続き部704から構成される。見出し部702は、プログラム名などの定義を含む。環境部702には、入出力ファイルの定義と、入出力ファイルの編成の定義を含む。例えば、プログラムP01は、環境部702において、入力ファイルと出力ファイルを順編成ファイルであると宣言する。
データ部703と手続き部704は本実施例の内容に関わるので、それらの部分を以下に説明する。
図8は、前記並列化対象プログラム211のデータ部703の例801である。COBOL言語の構文に従って記載しているので、詳細な説明は省略する。データ部の例801の意味について以下で説明する。
図9は、データ部の例801の記載内容のうちファイルに関する部分の模式図である。論理ファイルF11(930)は、変数R11(910)と関連付いている。変数R11(910)は、サイズが8バイトである変数R11-MEISAI-ID(911)と、サイズが5バイトである変数R11-PCODE(912)と、サイズが3バイトである変数R11-QUANTITY(913)の3つの変数を部分項目として持つ。変数R11(910)のサイズは16バイトである。
並列化対象プログラム211において「READ F11」という命令文を実行すると、論理ファイルF11の1件のレコードの内容が、変数R11(910)に格納される。変数R11の部分項目は、当該レコードを構成する項目に対応する。
同様に、論理ファイルF12(940)は、変数R12(920)と関連付いている。変数R12(920)は、サイズが5バイトである変数R12-PCODE(921)と、サイズが3バイトである変数R12-QUANTITY(922)の2つの変数を部分項目として持つ。変数R12(920)のサイズは8バイトである。
並列化対象プログラム211において「WRITE R12」という命令文を実行すると、変数R12(920)の内容が、1件の新たなレコードとして論理ファイルF12(940)に書き出される。変数R12の部分項目は、当該レコードを構成する項目に対応する。
並列化対象プログラム211がCOBOL言語で記述されている場合、上記の手段によって、ファイルと関連づいた変数のレイアウトを識別することで、当該並列化対象プログラム211の変数と、当該並列化対象プログラムが読み書きするレコード項目のレイアウトとの対応関係を識別する。並列化対象プログラムがCOBOL以外の言語で記述されている場合においても、プログラム内の変数と、ファイルレコード項目との対応関係を識別すれば、本実施例に記載の方法による並列化設計支援を行うことができる。
以上が、入力情報ステップS301の説明と、入力情報210の説明と、前記システム100が実現する並列化設計支援の説明である。
(2)プログラム構造・依存性解析(S302)
次に、図3のステップS302のプログラム構文・依存性解析について説明する。
(2)プログラム構造・依存性解析(S302)
次に、図3のステップS302のプログラム構文・依存性解析について説明する。
ステップS302は、プログラム構文・依存性解析ステップである。前記プログラム構文・依存性解析部102は、並列化対象プログラム211の構文解析と依存性解析を行い、プログラム構文・依存性情報220を出力する。前記プログラム構文・依存性解析部102が行う解析処理は、コンパイラ技術やプログラム解析技術の分野で既知のものであるので、その処理内容の説明は行わない。プログラム構文・依存性解析情報220を構成するテーブルを例を用いて説明する。
図10は、前記ファイルレコード識別情報221を格納したファイルレコード識別テーブルの例1000である。ファイルレコード識別テーブル1000の行は、並列化対象プログラム211の変数のうち、データ部801において、ファイルと関連を定義されている変数に対応する。
前記ファイルレコード識別テーブル1000のカラム1001は変数識別子であり、当該行に対応する変数を特定する。本実施例では、変数識別子と変数名は同一であるものとする。カラム1002は論理ファイル識別子であり、当該変数が関連する論理ファイルを特定する。本実施例では、論理ファイル識別子は論理ファイル名と同一であるものとする。カラム1003は項目識別子であり、当該変数が関連する当該論理ファイルのレコードのうち、当該変数が対応している当該レコードの部分項目を、そのレコード内の位置によって特定する。
例えば行1010によると、変数R11は論理ファイルF11に関連しその項目識別子は[1-16]である。これは、変数R11は論理ファイルF11のレコード全体(16バイト)に対応することを示す。
また、例えば行1011によると、変数R11-MEISAI-IDは論理ファイルF11に関連しその項目識別子は[1-8]である。これは変数R11-MEISAI-IDは論理ファイルF11のレコードの冒頭8バイトの内容に対応することを示す。
図11は、前記命令文情報222を格納した命令文テーブルの例1100である。命令文テーブル1100の各行は、並列化対象プログラム211の手続き部を解析する際の解析単位に対応する。本実施例では、解析単位を命令文と呼称し、命令文識別子を付与して識別する。解析単位は、必ずしもCOBOL言語の構文における命令文と合致しなくともよく、例えばCOBOL言語における命令文の構成要素である句を解析単位とすることもありえる。
命令文テーブル1100のカラム1101は命令文識別子である。本実施例では、手続き部内での通し番号としている。カラム1102は命令文内容である。
命令文テーブル1100に登場する命令文を簡単に説明する。OPEN文は、論理ファイルをオープンする命令文である。MOVE文は、変数の値を更新する命令文である。
READ文は、入力ファイルから1件のレコードを読み込み、当該入力ファイルのレコードに関連付けられた変数にその内容を格納する命令文である。AT END句のスコープ内にある命令文は、読み込みの結果、当該入力ファイルの終端に到達した場合に実行される。
PERFORM文は、そのスコープ内の命令文のグループを繰り返し実行する命令文である。
繰り返し処理は、UNTIL以下に記述された条件が真となった時点で終了する。ADD文は、第一オペランドの値を第二オペランドに加算する命令文である。WRITE文は、オペランドで指定する変数の内容を、当該変数が関連付けられている論理ファイルに、1件の新しいレコードとして書き出す命令文である。
繰り返し処理は、UNTIL以下に記述された条件が真となった時点で終了する。ADD文は、第一オペランドの値を第二オペランドに加算する命令文である。WRITE文は、オペランドで指定する変数の内容を、当該変数が関連付けられている論理ファイルに、1件の新しいレコードとして書き出す命令文である。
END-で始まる命令文は、それに対応する命令文のスコープの終端を示す。本実施例では、命令文のスコープはカラム1102内におけるインデントでも示している。HIGH-VALUEは定数である。
図12は、前記変数参照更新情報223を格納する変数参照更新テーブルの例1200である。変数参照更新テーブル1200の行は、命令文が行う変数の参照の作用または更新の作用を表現する。
前記変数参照更新テーブル1200のカラム1201は命令文識別子であり、当該行が対応する命令文を特定する。カラム1202は変数識別子であり、当該行に対応する命令文のうちの、当該行に対応する変数を特定する。カラム1203は種別であり、更新または参照のいずれかを特定する。
例えば、行1210は、命令文識別子4のMOVE文は、変数FLG1を更新することを示す。また、行1220は、命令文識別子7のMOVE文は、変数R11-PCODEを参照することをす。
以下、本実施例では、説明の読みやすさを考慮し、命令文または命令文識別子を「4 (MOVE)」などのように、命令文識別子と、命令文の種類を特定する語と一緒に記載するものとする。括弧部分はあくまでも説明のためであり、前記並列化支援プログラム150においては括弧部分は命令文識別子の一部ではない。
図13は、前記条件構文木224の例として、命令文6(PERFORM)のUNTIL以下の条件の条件構文木1310と、命令文9(PERFORM)のUNTIL以下の条件の条件構文木1320を示す。構文木の定義と生成方法は既知であるので説明は省略する。
図14は、前記制御依存性情報225を格納する制御依存性テーブルの例1400である。制御依存性テーブル1400の行は、命令文が他の命令文に対して持つ制御依存性を表現している。制御依存性テーブル1400のカラム1401は依存元命令文識別子である。カラム1402は依存先命令文識別子である。
命令文Aが命令文Bに制御依存するとは、命令文Aの実行の有無が、命令文Bの実行結果に依存するという意味である。例えば、前記制御依存性テーブル1400の行1410は命令文4(MOVE)が命令文3(READ)に制御依存することを示す。これは、命令文4(MOVE)は命令文3(READ)のAT ENDのスコープ内だからである。
また、行1420は、命令文7(MOVE)は命令文6(PERFORM)に制御依存することを示す。これは命令文7(MOVE)は命令文6(PERFORM)のスコープ内だからである。本実施例では、制御依存性は、分岐や繰り返しやAT ENDのスコープを示す情報によっても代替可能である。
図15は、図14に示した前記制御依存性テーブル1400と同様の情報を、グラフ形式で表現した制御依存グラフの例1500を示す。制御依存グラフ1500のノードは前記制御依存性テーブル1400に登場する命令文に対応する。ノード間の有向エッジは、依存元命令文から依存先命令文への制御依存に対応する。このように、前記制御依存性情報225は、制御依存グラフとして生成・格納してもよい。
図16は、前記データ依存性情報226を格納するデータ依存性テーブルの例1600である。データ依存性テーブル1600の行は、命令文の中の変数の、データ依存先の命令文とその変数を示す。カラム1601は依存元命令文識別子である。カラム1602は依存元変数識別子である。カラム1603は依存先命令文識別子である。カラム1604は依存先変数識別子である。
変数Aが変数Bにデータ依存するとは、変数Aの値が変数Bの値の影響を受けるという意味である。例えば、データ依存性テーブル1600の行1610は、命令文17(WRITE)における変数R12-PCODEの値は、命令文15(MOVE)における変数CUR-PCODEから代入を受けていることを示す。ここで、変数R12-PCODEは命令文17(WRITE)に明示されていないが、変数R12-PCODEは当該WRITE文のオペランドR11の部分項目であるので、命令文17(WRITE)が使用している変数の一部である。
以上が、ステップS302(プログラム構文・依存性解析)の説明である。
(3)ファイルアクセスロジック生成(S303)
次に、ステップS303のファイルアクセスロジック生成について説明する。
(3)ファイルアクセスロジック生成(S303)
次に、ステップS303のファイルアクセスロジック生成について説明する。
図3のステップS303は、ファイルアクセスロジック生成ステップである。前記ファイルアクセスロジック生成部103は、前記プログラム構文・依存性情報220を参照しながらファイルアクセスロジック生成処理を実行し、前記ファイルアクセスロジック情報230を出力する。
図17は、前記ファイルアクセスロジック生成部103の処理フローを示す。S1701の終端依存性解析ステップでは、S1703の変数依存性解析ステップで使用する終端依存性情報1800を生成する。S1702のファイルアクセス制御構造解析ステップでは、前記ファイルアクセス制御構造情報231を生成する。S1703は変数依存性解析ステップであり、前記変数依存性情報232を生成する。
(3-1)終端依存性解析(S1701)
図17の終端依存性解析ステップS1701について説明する。本実施例では、変数が、入力ファイルの終端への到達時に更新されている場合、当該変数は当該入力ファイルへの終端依存性を持つと呼称する。また、当該変数を、終端依存変数と呼称する。
(3-1)終端依存性解析(S1701)
図17の終端依存性解析ステップS1701について説明する。本実施例では、変数が、入力ファイルの終端への到達時に更新されている場合、当該変数は当該入力ファイルへの終端依存性を持つと呼称する。また、当該変数を、終端依存変数と呼称する。
図18に、終端依存性情報を格納する終端依存性テーブルの例1800を示す。終端依存性テーブル1800の各行は、終端依存性を持つ変数に対応する。
前記終端依存性テーブル1800のカラム1801は、終端依存変数の変数識別子である。カラム1802は依存先の論理ファイル識別子である。前記終端依存性テーブル1800の行1810は、変数FLG1が、論理ファイルF11に終端依存することを示す。
終端依存変数は以下の手順で特定する。まず、命令文テーブル1100を参照し、AT END句を持つREAD文を特定する。次に、制御依存性テーブル1400を参照し、当該READ文へ制御依存する命令文を特定する。次に、当該命令文が更新している変数を、変数参照更新テーブル1200を参照して特定する。最後に、当該READ文の読み込み元の論理ファイルを、ファイルレコード識別テーブル1000に基づいて特定する。これで、当該変数が、当該論理ファイルに終端依存することが識別できる。
(3-2)ファイルアクセス制御構造解析(S1702)
図17のファイルアクセス制御構造解析ステップS1702について説明する。ファイルアクセス制御構造情報は、ファイル入出力命令(READ文またはWRITE文)の実行の有無や、実行回数や、実行順序に関する制御構造(分岐やループ)を並列化対象プログラム211から抜粋したものである。
(3-2)ファイルアクセス制御構造解析(S1702)
図17のファイルアクセス制御構造解析ステップS1702について説明する。ファイルアクセス制御構造情報は、ファイル入出力命令(READ文またはWRITE文)の実行の有無や、実行回数や、実行順序に関する制御構造(分岐やループ)を並列化対象プログラム211から抜粋したものである。
図19に、ステップS1702が出力する前記ファイルアクセス制御構造情報231を格納するファイルアクセス制御構造テーブルの例1900を示す。ファイルアクセス制御構造テーブル1900の各行は、並列化対象プログラム211のうち、ファイルアクセス制御構造を構成する命令文に対応する。
カラム1901は、ファイルアクセス制御構造を構成する命令文の識別子である。カラム1902は、命令文の内容である。ファイルアクセス制御構造テーブル1900の各行の順序と、命令文内容1902のインデントは、各行の命令文内容1902間の関係を示す。例えば、行1910の命令文9(PERFORM)は、ファイルアクセス制御構造においても、命令文6(PERFORM)のスコープ内にある。
図20に、ファイルアクセス制御構造の生成手順を示す。まず、命令文テーブル1100に基づいてファイル入出力文Sを識別し、ファイルアクセス制御構造の一部を生成する起点とする。当該ファイル入出力文自体もファイルアクセス制御構造の一部として識別する(S2001)。例えば、命令文11(READ)を起点とする。
次に、当該ファイル入出力文の実行に影響を与える全ての制御命令を特定する(S2002)。これは例えば、制御依存グラフ1500において、当該命令文のノードから到達可能な全てのノードを特定することで達成できる。例えば、命令文11(READ)からは命令文9(PERFORM)と命令文6(PERFORM)が到達可能である。これにより、命令文6(PERFORM)と、命令文9(PERFORM)と、命令文11(READ)が、ファイルアクセスロジック制御構造の構成要素として識別された。
ファイルアクセスロジック制御構造の生成は、S2001とS2002を、全てのファイル入出力文について繰り返すことで行われる(S2003)。以上で、図17のS1702の説明を終える。
(3-3)変数依存性解析(S1703)
図17のS1703の変数依存性解析ステップについて説明する。ここでは、ファイルアクセスロジック制御構造の中に登場する変数が持つ、入力ファイルまたは出力ファイルへの依存性を解析する。
(3-3)変数依存性解析(S1703)
図17のS1703の変数依存性解析ステップについて説明する。ここでは、ファイルアクセスロジック制御構造の中に登場する変数が持つ、入力ファイルまたは出力ファイルへの依存性を解析する。
本実施例では、変数依存性は、入力依存と、間接依存と、終端依存と、出力依存の4種類を定義する。入力依存とは、当該変数は入力ファイルのレコードの特定の項目と関連づいていることを意味する。間接依存とは、当該変数が、入力依存変数から代入を受けていることを意味する。終端依存は既に説明した。出力依存とは、当該変数が出力ファイルのレコードと関連づいていることを意味する。
図21は、変数依存性情報232を格納する変数依存性テーブルの例2100である。変数依存性テーブル2100の行は、ファイルアクセス制御構造を構成する命令文において使用されている変数に対応する。
変数依存性テーブル2100のカラム2101は、依存元命令文識別子である。カラム2102は当該依存元命令文の中の依存元変数の識別子である。カラム2103は依存性種別である。カラム2104は依存先論理ファイルの識別子である。カラム2105は依存先論理ファイルのレコードの中の依存先項目の識別子である。
変数依存性テーブル2100の行2110は、終端依存変数の例である。行2120は、間接依存変数の例である。行2130は、入力依存変数の例である。行2140は、出力依存変数の例である。依存性種別2003が出力依存または終端依存の場合、項目識別子カラム2005の値は「*」である。
図22は、図17の変数依存性解析ステップS1703の処理フローである。変数依存性解析は、ファイルアクセスロジック制御構造内で使用されている全ての変数に対して実施する(S2201、S2211)。
当該変数の入力依存性と出力依存性は、ファイルレコード識別テーブル1000を用いて判定する(S2202、S2204)。例えば、変数依存性テーブル2100の行2130と2140は、ファイルレコード識別テーブル1000の行1012と行1013からそれぞれ生成する。入力依存の場合は項目識別子も転記するが、出力依存の場合は不要であるので「*」とする。
当該変数の終端依存性は、終端依存性テーブル1800を用いて判定する(S2206)。例えば、変数依存性テーブル2100の行2110は、終端依存性テーブル1800の行1810から生成する。項目識別子は「*」とする。
入力依存、出力依存、終端依存でない変数については、データ依存性テーブル1600に基づいて、当該変数の値に影響を与える代入の連鎖をたどり、当該変数が入力依存変数から代入をうけているかどうかを判定する(S2208)。
例えば変数依存性テーブル2100の行2120は命令文9(PERFORM)の変数CUR-PCODEが間接依存変数であることを示しているが、それは以下の手順で判明する。まず、データ依存性テーブル1600の行1620によって、当該変数が命令文7(MOVE)における変数R11-PCODEの値の代入を受けていることがわかる。変数R11-PCODEは入力依存変数であることが既に判明しているので、そこから代入を受けているCUR-PCODEは間接依存変数であることが判明した。
以上でステップS303のファイルアクセスロジック生成処理の説明を終える。前記並列化設計支援システム100は、ファイルアクセスロジック情報230を、ディスプレイやプリンタなどの出力装置170へ出力することができる。前記並列化設計支援システムの使用者は、出力されたファイルアクセスロジック情報を参照することで、並列化対象プログラム211の処理内容をより効率的に知ることができる。
図23は、ファイルアクセスロジック情報230の出力例2300を示す。これは、ファイルアクセス制御構造テーブル1900の内容に基づき、ファイルアクセス制御構造内の変数を、変数依存性テーブル2100に基づいて、ファイルへの依存性をより明確に示す文字列で置換して表示するものである。具体的には、入力依存変数は「R(論理ファイル識別子.項目識別子)」という形式の文字列に置換して表示する。また、間接依存変数は「R*(論理ファイル識別子.項目識別子)」という形式の文字列で置換して表示する。また、出力依存変数は、依存先の論理ファイル識別子で置換して表示する。
また、出力例2300では、終端依存変数を用いた原子式を、ファイルの終端への到達を判定する条件式であることを明示する形式である「ファイルエンド(論理ファイル名)」に変換して示す。
出力例2300を参照することで、前記並列化設計支援システム100の使用者は、各変数とファイルとの関連性をより効率的に知ることができる。また、ファイルアクセス制御構造は、並列化対象プログラム211そのものよりも小さなサイズであるので、前記並列化設計支援システム100の使用者は、ファイル入出力に関する制御構造をより効率的に理解することができる。
以上が、ステップS303(ファイルアクセスロジック生成)の説明である。
(4)並列性判定(S304)
次に、ステップS304の並列性判定ステップについて説明する。
(4)並列性判定(S304)
次に、ステップS304の並列性判定ステップについて説明する。
ステップS304は、並列性判定ステップである。図24に、本ステップの処理手順を示す。並列性判定は、ファイルアクセスロジック情報240に基づいて行う。WRITE文をスコープに含むループ文の開始よりも以前に終了する、READ文をスコープに含むループ文の有無を判定し、もし結果がYESならば、並列化不可と判定する(S2401)。このようなプログラムに対しては、並列化設計支援システム100は、ステップS305以降を実施しない。
具体的には、まず制御依存グラフ1500において、WRITE文を起点としてエッジをたどっていき、その先にはもうPERFORM文がないというPERFORM文を特定する。例では、命令文17(WRITE)を起点とすると、命令文6(PERFORM)がそのようなPERFORM文に該当する。
命令文6(PERFORM)よりも以前に開始されるPERFORM文がもしあったとすると、それは制御依存グラフ1500の中で、ノード6(PERFORM)とは異なる島に属するPERFORM文でなければならないが、そのようなPERFORM文は存在しない。よって、並列化可能と判定する。
S304の並列性判定処理で「並列化不可」と判定されるようなプログラムの例として、第一のループ処理において入力ファイルを終端まで読み込み、そのループの終了後、第二のループ処理において出力ファイルへの書き出しを行うようなプログラムがある。この場合、入力ファイルを分割してしまうと、出力が異なってしまう場合があるため、本実施例の並列化設計支援システム100は、並列化不可と判定する。
上記のような構造を持つプログラムが行う処理の例としては、例えば入力ファイルの全レコードから読み込んだ値の中間値を計算し、それに基づいて順次出力を行う処理がある。
以上が、ステップS304(並列性判定)の説明である。
(5)論理ファイル分割制約生成(S305)
次に、ステップS305の論理ファイル分割制約生成ステップについて説明する。
(5)論理ファイル分割制約生成(S305)
次に、ステップS305の論理ファイル分割制約生成ステップについて説明する。
ステップS305は、論理ファイル分割制約生成ステップである。図25に、その手順を示す。論理ファイル分割制約生成処理は、論理ファイル分割制約情報240を生成するステップS2501のみで構成される。
図26に、論理ファイル分割制約情報240を格納する論理ファイル分割制約テーブルの例2600を示す。本テーブルの行は、並列化対象プログラム211の入力ファイルに対応する。本実施例の並列化対象プログラムであるプログラムP01の入力ファイルは1つであるので、行は1つしかない。
論理ファイル分割制約テーブル2600のカラム2601は、並列化対象プログラムの識別子である。カラム2602は、入力ファイルを特定する論理ファイル識別子である。カラム2603は、当該論理ファイルの分割における制約キーとなる変数の識別子である。カラム2604は、前記変数の項目識別子である。
論理ファイル分割制約テーブル2600の行2610によると、論理ファイルF11の制約キー変数はR11-PCODEである。これは、論理ファイルF11を分割する際には、F11のレコードの項目の一つであるR11-PCODEの値が同一であるレコードは、分割後も同じファイルに存在するように分割を行う必要があることを示す。
例えば、R11-PCODEは、物理ファイルにおいては商品コードに該当するレコード項目に対応するが、図6に示すように、商品コードが同一のレコードは、分割後も同一ファイルになくてはならない。もし商品コードが同一である明細1と明細2の間で分割が行われると、処理結果が並列化前と並列化後で異なってしまう。
変数R11-PCODEが制約キーとなるのは、当該変数が入力依存変数であり、かつまた、ファイルアクセスロジック制御構造内のループ文の、繰り返し条件で使用されているためである。このように、論理ファイル分割制約生成ステップS305では、ファイルアクセスロジックにおけるループ文の繰り返し条件を解析することで、論理ファイル分割制約を生成する。
図27に、ステップS2501の論理ファイル分割制約生成の処理フローを示す。まず、ファイルアクセス制御構造テーブル1900に基づき、ファイルアクセス制御構造内のループ文を処理対象として特定する(S2701)。例えば、行1910のPERFORM文を処理対象とする。
次に、変数依存性テーブル2100に基づき、前記ループ文の繰り返し条件式に含まれる入力依存変数を識別し(S2702)、制約キー変数としてその変数識別子と項目識別子を出力する(S2703)。行1910のPERFORM文を例に取ると、変数R11-PCODEが該当するので、S2702で識別した依存変数を、対応する論理ファイルに対する制約キー変数として出力する。
上記の処理を、ファイルアクセス制御構造内の全てのループ文に対して行う(S2704)。もし、入力ファイルのうち、制約キー変数が識別できなかったものがあれば、論理ファイル分割制約テーブル2400において、当該論理ファイルに対する制約キー変数が無いことを「*」で明示する。
以上が、ステップS305(論理ファイル分割制約生成)の説明である。
(6)物理ファイル分割制約生成(S306)
次に、ステップS306の物理ファイル分割制約生成ステップについて説明する。
(6)物理ファイル分割制約生成(S306)
次に、ステップS306の物理ファイル分割制約生成ステップについて説明する。
ステップS306は、物理ファイル分割制約生成ステップである。図28に、その処理フローを示す。物理ファイル分割制約生成処理は、物理ファイル分割制約情報260を生成するステップS2801のみで構成される。
図29に、物理ファイル分割制約情報250を格納する物理ファイル分割制約テーブルの例2900を示す。本テーブルの行は、並列化対象プログラム211の入力ファイル(物理ファイル)に対応する。本実施例の並列化対象プログラムであるプログラムP01の入力ファイルは1つであるので、行は1つしかない。
論理ファイル分割制約テーブル2900のカラム2901は、物理ファイル名である。カラム2402は、当該物理ファイルの分割における制約キーとなる項目の識別子である。
物理ファイル分割制約テーブル2900の行2910によると、物理ファイル受注明細FILEの制約キー項目識別子は[9-13]である。これは、受注明細FILEを分割する際には、レコードの9バイト目から始まる5バイト長の項目に着目し、連続するレコードの当該項目の値が一致する場合は、それらの連続するレコード群は、分割後も同じファイルに存在するように分割を行う必要があることを示す。
物理ファイル分割制約テーブル2900は、論理ファイル分割制約テーブル2600の行を、変換することで生成する。具体的には、論理ファイル分割制約テーブルの行の、論理ファイル識別子から、当該論理ファイルに対応する物理ファイル名を識別し、カラム2901に格納する。論理ファイルと物理ファイルの対応関係は、物理ファイルテーブル400に基づいて特定する。また、論理ファイル分割制約テーブルの行の、項目識別子カラム2604の内容を、当該物理ファイルの項目識別子カラム2902に転記する。
以上が、ステップS306(物理ファイル分割制約生成)の説明である。
(7)物理ファイル分割テンプレート生成(S307)
次に、ステップS307のステップについて説明する。
(7)物理ファイル分割テンプレート生成(S307)
次に、ステップS307のステップについて説明する。
ステップS307は、物理ファイル分割テンプレート生成ステップである。図30に、その処理フローを示す。分割後ファイル名生成ステップS3001では、多重度213と、分割対象の物理ファイル名から、分割後のファイル名を生成する。例えば、本実施例においては、分割対象物理ファイルは受注明細FILEであり、多重度は2である。分割によって生成される2つの物理ファイルの名称はそれぞれ受注明細FILE001と受注明細FILE002とする。
図30のステップS3002は、物理ファイル分割テンプレートを生成する。図31に、物理ファイル分割テンプレート情報260を格納する、物理ファイル分割テンプレートテーブル3100を示す。本テーブルの行は、分割後ファイルに対応する。
物理ファイル分割テンプレートテーブル3101のカラム3101は分割元物理ファイル名である。カラム3102は境界項目識別子である。カラム3103は境界項目レンジ制約である。カラム3104は分割後ファイル名である。
カラム3102の境界項目識別子は、物理ファイル分割制約テーブル2900のカラム2902の制約キー項目識別子から転記する。本実施例においては、カラム3103の境界項目レンジ制約は使用しないため、値は「*」である。
前記並列化設計支援システム100の使用者は、物理ファイル分割テンプレート3100を参照することで、並列化対象プログラム211をファイル分割によって並列化する際の、入力ファイルの分割方法を効率的に設計することができる。
例えば前記使用者は、物理ファイル分割テンプレート3100に基づき、分割後ファイル名はそれぞれ受注明細FILE001と受注明細FILE002とすればよいことがわかる。また、受注明細FILE001は、レコード項目[9-13]の値が変化する箇所で分割元ファイルを分割して生成することができ、受注明細FILE002も、レコード項目[9-13]の値が変化する箇所で分割元ファイルを分割して生成することができることがわかる。
図6の分割後ファイル611は、前記使用者が、物理ファイル分割テンプレート3100に基づき、受注明細FILE001に、境界項目[9-13]の値が11111と22222であるレコードを含めるように、また受注明細FILE002に、境界項目[9-13]の値が33333と44444であるレコードを含めるように、受注明細FILEを分割した結果を示す。
以下に本発明の第二の実施形態について図面を用いて詳細に説明する。第二の実施例においては、複数の入力ファイルを持つプログラムの並列化設計支援を行うシステムを説明する。
例えば並列化対象プログラムが2つの入力ファイルを扱う場合、第一の入力ファイルと第二の入力ファイルの分割は相互の整合性を考慮して行う必要がある。また、第一の入力ファイルの分割後ファイルの配置と、第二の入力ファイルの分割後の配置は、相互の整合性を考慮して行う必要がある。
図32は、本実施形態の並列化設計支援システム3200の構成図である。第一の実施例における並列化設計支援システム100との差異のみを説明する。前記並列化設計支援システム100における論理ファイル分割制約生成部105に代わり、並列化設計支援システム3200は、論理ファイル分割配置制約生成部3201を備える。また、論理ファイル分割制約情報240に代わり、並列化設計支援システム3200は、論理ファイル分割配置制約情報3310を備える。
また第一の実施例における前記並列化設計支援システム100が備える物理ファイル分割制約生成部106に代わり、本実施例の並列化設計支援システム3200は、物理ファイル分割配置制約生成部3202を備える。また、物理ファイル分割制約情報250に代わり、並列化設計支援システム3200は、物理ファイル分割配置制約情報3320を備える。
図33は、前記並列化設計支援システム3200が備える各種データの構成3300である。第一の実施例における前記並列化設計支援システム100のデータ構成200との差異は以下のとおりである。論理ファイル分割配置制約情報3310は、論理ファイル分割制約情報240に加えて、論理ファイル配置制約情報3311を備える。また、物理ファイル分割配置制約情報3320は、物理ファイル分割制約情報250に加えて、物理ファイル配置制約情報3321を備える。
以下、本実施形態の並列化設計支援方法の実施手順について、図34の全体処理フローに従い、図35から図57を用いて説明する。ステップS301(入力情報登録)、ステップS302(プログラム構文・依存性解析)、ステップS303(ファイルアクセスロジック生成)、ステップS304(並列性判定)は、第一の実施例のものと同一であるので、説明は省略する。
(1)入力情報登録(S301)
本実施例における入力情報を説明する。並列化対象プログラム3301は、プログラムP02である。物理ファイル情報3302を格納するテーブルの例を図35のテーブル3500に示す。プログラムP02は、集計FILEと倉庫FILEという2つのファイルを入力とし、出庫指示FILEを出力ファイルとする。これらの物理ファイルは、プログラムP02において、それぞれ論理ファイルF21、F22、F23としてアクセスされる。
(1)入力情報登録(S301)
本実施例における入力情報を説明する。並列化対象プログラム3301は、プログラムP02である。物理ファイル情報3302を格納するテーブルの例を図35のテーブル3500に示す。プログラムP02は、集計FILEと倉庫FILEという2つのファイルを入力とし、出庫指示FILEを出力ファイルとする。これらの物理ファイルは、プログラムP02において、それぞれ論理ファイルF21、F22、F23としてアクセスされる。
ここで、集計FILEは、第一の実施例においてプログラムP01が出力するものと同一であるが、その点については第三の実施例で説明する。
図36に、プログラムP02が行う処理の概要を例を用いて示す。この例において、集計FILEの各レコードは、商品コードで特定される商品の受注数量を表す。倉庫FILEの各レコードは、倉庫コードで特定される倉庫が保管している商品の商品コードを表す。
プログラムP02が行う業務処理は、出庫指示である。各倉庫に対し、出庫すべき商品とその数量を指示するために用いられるファイルである出庫指示FILEを出力する。出庫指示FILEの各レコードは、倉庫コードで特定される倉庫に対し、商品コードで特定される商品を出庫すべきであることと、その数量を示している。
図37は、前記の処理を行うプログラムP02をファイル分割によって多重度2で並列化した結果を示す。入力ファイル3710を、物理ファイル分割配置プログラム3740が、分割後ファイル3711と分割後ファイル3712に分割する。さらに、前記物理ファイル分割配置プログラム3740は、入力ファイル3720を、分割後ファイル3721と分割後ファイル3722に分割する。
そして、前記物理ファイル分割配置プログラム3740は、分割後ファイル3711と分割後ファイル3721を、並列実行サーバ3760に配置する。さらに、前記物理ファイル分割配置プログラム3740は、分割後ファイル3712と分割後ファイル3722を、並列実行サーバ3770に配置する。
並列実行サーバ3760はプログラムP02と同じプログラム3780を、分割後ファイル3711と分割後ファイル3721を入力ファイルとして実行する。プログラム3780は、出力ファイル3731を出力する。
同様に、並列実行サーバ3770はプログラムP02と同じプログラム3790を、分割後ファイル3712と分割後ファイル3722を入力ファイルとして実行する。プログラム3790は、出力ファイル3732を出力する。
物理ファイルマージプログラム3750は、出力ファイル3731と出力ファイル3732を入力とし、それらをマージしたファイル3730を出力する。
入力ファイル3710は集計FILE3610と同一であり、入力ファイル3720は倉庫FILE3620と同一である。プログラム3780とプログラム3790は、プログラムP02と同一であり、出力ファイル3730は出庫指示FILE3630と同一である。
このような物理ファイル分割配置プログラム3740と物理ファイルマージプログラム3750を実現することで、プログラムP02を改変することなく、プログラムP02の並列実行を実現できる。そのためにはプログラムP02の動作の知識に基づく設計行為が必要である。
本実施例は、前記物理ファイル分割配置テンプレート情報3330を出力することで、物理ファイル分割配置プログラム3740の設計を支援する、並列化設計支援システム3200を説明する。
図38は、並列化対象プログラム3301のデータ部3801である。図39は、データ部3801の記載内容のうち、ファイルに関する部分を模式的に示す。
(2)プログラム構文・依存性解析(S302)
以下に、ステップS302(プログラム構文・依存性解析)の実行結果として本実施例の前記並列化設計支援システム3200が出力する情報の例を示す。
(2)プログラム構文・依存性解析(S302)
以下に、ステップS302(プログラム構文・依存性解析)の実行結果として本実施例の前記並列化設計支援システム3200が出力する情報の例を示す。
図40は、ファイルレコード識別情報3303に格納されたファイルレコード識別テーブルの例4000である。 図41は、命令情報3304に格納された命令文テーブルの例4100である。図42は、制御依存情報3305に格納された制御依存性テーブルの例4200である。これらは本実施例の理解を助けるために示した。
(3)ファイルアクセスロジック生成(S303)
以下に、ステップS303(ファイルアクセスロジック生成)の実行結果として、本実施例の前記並列化設計支援システム3200が出力する情報の例を示す。
(3)ファイルアクセスロジック生成(S303)
以下に、ステップS303(ファイルアクセスロジック生成)の実行結果として、本実施例の前記並列化設計支援システム3200が出力する情報の例を示す。
図43は、ファイルアクセス制御構造情報3306に格納されたファイルアクセス制御構造テーブルの例4300である。図44は、変数依存性情報3307に格納された変数依存性テーブルの例4400である。
(4)並列性判定(S304)
ステップS304(並列性判定)の本実施例における判定結果は「並列化可能」となる。
(4)並列性判定(S304)
ステップS304(並列性判定)の本実施例における判定結果は「並列化可能」となる。
以上が、本実施例における、入力情報登録ステップS301と、プログラム構文・依存性解析ステップS302と、ファイルアクセスロジック生成ステップS303と、並列性判定ステップS304の説明である。次に、ステップS3404の並列性判定ステップについて説明する。
(5)論理ファイル分割配置制約生成(S3405)
ステップS3405は、論理ファイル分割配置制約ステップである。図45に処理フローを示す。S2501(論理ファイル分割制約生成)は実施例1におけるステップと同一である。図46に、S2501の出力である論理ファイル分割制約情報240に格納された論理ファイル分割制約テーブル4600を示す。論理ファイルF21とF22に対する制約キー変数は無く、これらの論理ファイルの分割は、レコードの境界であればどこでも可能であることを示す。
(5)論理ファイル分割配置制約生成(S3405)
ステップS3405は、論理ファイル分割配置制約ステップである。図45に処理フローを示す。S2501(論理ファイル分割制約生成)は実施例1におけるステップと同一である。図46に、S2501の出力である論理ファイル分割制約情報240に格納された論理ファイル分割制約テーブル4600を示す。論理ファイルF21とF22に対する制約キー変数は無く、これらの論理ファイルの分割は、レコードの境界であればどこでも可能であることを示す。
図45のS4502は、論理ファイル配置制約生成ステップである。図47に、本ステップの出力である、論理ファイル配置制約情報3311を格納する論理ファイル配置制約テーブルの例4700を示す。本テーブルの各行は、2つの入力ファイルの間に存在する配置制約を表現する。
論理ファイル配置制約テーブル4700のカラム4701は、プログラム識別子である。カラム4702とカラム4705は論理ファイル識別子である。当該行に対応する2つの論理ファイルを特定する。カラム4703は、カラム4702で識別される論理ファイルに対する制約キー変数の識別子である。カラム4706は、カラム4705で識別される論理ファイルに対する制約キー変数の識別子である。カラム4704は、2つの論理ファイルの制約キー変数の値を比較する条件である。各識別子の「1」、「2」は論理ファイルF21, F22にそれぞれ対応する。
論理ファイル配置制約テーブル4700の内容は行4710のみである。これは、論理ファイルF21と論理ファイルF22の分割後ファイルを配置する際には、それぞれの制約キー変数に対応するレコード項目の値が等しい部分を、同一の並列実行サーバに配置しなければならないことを示す。
行4710の内容は、図37においてそうであるように、集計FILE(論理ファイルF21に対応)の商品コード(制約キー変数R21-PCODEに対応)と、倉庫ファイル(論理ファイルF22に対応)の商品コード(制約キー変数R22-PCODEに対応)が一致する部分は、同一の並列実行サーバに配置しなければならないことを示す。
論理ファイル配置制約を満たさない分割後ファイルの配置は、並列化前と並列化後の並列化対象プログラム3301の処理結果の不一致を引き起こす。例えば、図37において、分割後ファイル3711の第二レコードが、分割後3712の冒頭に移動した場合、商品コード22222の商品の出庫指示が出力されない。
図48は、論理ファイル配置制約生成ステップS4502の処理フローである。まず、ファイルアクセス制御構造テーブル4300に基づき、WRITE文を特定する(S4801)。次に、制御依存性テーブル4200に基づき、当該WRITE文をスコープに含む分岐命令文を特定し、その分岐条件を識別する(S4802)。
例えば、命令文15(WRITE)は、分岐命令文である11(IF)のスコープ内にある。当該IF文の分岐条件に含まれる原子式は「R21-PCODE=R22-PCODE」である。分岐条件は、プログラム構文・依存性解析ステップの出力である条件構文木に基づいて識別する。
次に、分岐条件が、2つの論理ファイルに関連づいた2つの依存変数同士の比較であることを確認する(S4803)。例では、変数R21-PCODEは論理ファイルF21の入力依存変数であり、変数R22-PCODEは論理ファイルF22の入力依存変数である。変数の依存性は、変数依存性テーブル4400に基づいて確認する。
S4803の確認結果がYESの場合は、当該分岐条件を論理ファイル配置制約に変換する(S4804)。例では「R21-PCODE=R22-PCODE」を、論理ファイル配置制約テーブル4700の行4710に変換する。S4803の確認結果がNOの場合は処理を終了する。
上記のS4801からS4804を、S4805とS4806に記載の条件に従って繰り返し実行することで、論理ファイル配置制約の生成が完了する。
以上が、S3405(論理ファイル分割配置制約生成)の説明である。本ステップで生成した論理ファイル分割配置制約情報3210を出力装置に出力する際の例を図49に示す。
図49の出力例4900では、論理ファイルと、当該論理ファイルに対する分割制約をノードで表現し、論理ファイル間の配置制約をエッジで表現する。ノード4910は論理ファイルF21に対応する。ノード4920は論理ファイルF22に対応する。エッジ4930は、論理ファイルF21と論理ファイルF22間の配置制約に対応する。
図49のような形式で、前記並列化設計支援システム3200が、論理ファイル分割配置制約情報3210を出力することで、前記並列化設計支援システム3200の使用者は、並列化対象プログラム3301を並列化する際の分割制約と配置制約をより効率的に理解することができる。
(6)物理ファイル分割配置制約生成(S3406)
次に、図34のステップS3406(物理ファイル分割配置制約生成)を説明する。図50に処理フローを示す。S5001(物理ファイル分割制約生成)は実施例1におけるステップS2801と同一である。図51に、S2801の出力である物理ファイル分割制約情報250に格納された物理ファイル分割制約テーブルの例5100を示す。集計FILEと倉庫FILEに対する制約キー変数は無く、これらの物理ファイルの分割は、レコードの境界であればどこでも可能であることを示す。
(6)物理ファイル分割配置制約生成(S3406)
次に、図34のステップS3406(物理ファイル分割配置制約生成)を説明する。図50に処理フローを示す。S5001(物理ファイル分割制約生成)は実施例1におけるステップS2801と同一である。図51に、S2801の出力である物理ファイル分割制約情報250に格納された物理ファイル分割制約テーブルの例5100を示す。集計FILEと倉庫FILEに対する制約キー変数は無く、これらの物理ファイルの分割は、レコードの境界であればどこでも可能であることを示す。
S5002は物理ファイル配置制約生成ステップである。図52に、本ステップの出力である、物理ファイル配置制約情報3321を格納する物理ファイル配置制約テーブルの例5200を示す。本テーブルの各行は、2つの入力ファイルの間に存在する配置制約を表現する。
物理ファイル配置制約テーブル5200のカラム5201とカラム5204は物理ファイル名である。当該行に対応する2つの物理ファイルを特定する。カラム5202は、カラム5201で特定される物理ファイルに対する制約キー項目の識別子である。カラム5205は、カラム5204で識別される物理ファイルに対する制約キー項目の識別子である。カラム5203は、2つの物理ファイルの制約キー項目の値を比較する条件である。
以上がS3406(物理ファイル分割配置制約生成)の説明である。本ステップで生成した論理ファイル分割配置制約情報3220を出力装置に出力する際の表現例を図53に示す。
図53の表現例5300では、物理ファイルと、当該物理ファイルに対する分割制約をノードで表現し、物理ファイル間の配置制約をエッジで表現する。ノード5310は集計FILEに対応する。ノード5320は倉庫FILEに対応する。エッジ5330は、それら二者間の配置制約に対応する。
図53のような形式で、前記並列化設計支援システム3200が、物理ファイル分割配置制約情報3220を出力することで、前記並列化設計支援システム3200の使用者は、並列化対象プログラム3301を並列化する際の分割制約と配置制約をより効率的に理解することができる。
以上が、ステップS3406(物理ファイル分割配置制約生成)の説明である。
(7)物理ファイル分割配置テンプレート生成(S3407)
次に、ステップS3407の物理ファイル分割配置テンプレート生成ステップについて説明する。
(7)物理ファイル分割配置テンプレート生成(S3407)
次に、ステップS3407の物理ファイル分割配置テンプレート生成ステップについて説明する。
ステップS3407は、物理ファイル分割配置テンプレート生成ステップである。図54に処理フローを示す。S3001(分割後ファイル名生成)は、実施例1における当該ステップと同一である。本実施例では、入力情報の一部として登録されている多重度2に対して、集計FILEを集計FILE001と集計FILE002に、そして、倉庫FILEを倉庫FILE001と倉庫FILE002にそれぞれ分割するものとする。
ステップS5402は、物理ファイル分割テンプレート生成である。本ステップの処理内容は、実施例1における同名のステップS3002と異なる。本ステップの出力例を図55に示す。
図55は、物理ファイル分割テンプレート情報261を格納する物理ファイル分割テンプレート5500である。各カラムの定義は実施例1と同一である。
図55の物理ファイル分割テンプレート5500は、集計FILEと倉庫FILEの分割方法を指示する情報を格納する。行の順序は、分割後FILEの生成順に対応する。行5510と行5520は、まず集計FILEを分割し集計FILE001と集計FILE002を生成するよう指示する情報である。その際は、集計FILEの項目[1-5]の値の変更点を境界にする(カラム5502)。
次に行5520と行5530は、倉庫FILEを分割し倉庫FILE001と倉庫FILE002を生成するよう指示する情報である。その際は、倉庫FILEの分割は項目[9-13]を境界とし(カラム5502)、さらに、倉庫FILE001には、項目[9-13]の値のレンジが、集計FILE001の項目[1-5]の値のレンジを含むことが制約である(カラム5503の境界項目レンジ制約)。
これは、図37に示すように、もし集計FILE001の項目[9-13](図37では「商品コード」)の値のレンジが{11111,22222}であるならば、倉庫FILE001の項目[1-5](図37では「商品コード」)の値のレンジは{11111,22222}を含まなければならないことを示す。
図56に、ステップS5402(物理ファイル分割テンプレート生成)の処理フローを示す。まず最初に、複数ある入力ファイルのうち、最初の分割元ファイルを決定し、対応する分割後ファイルについての分割ルールを出力する(S5601)。最初の分割元ファイルは任意に決めても良いし、入力装置を介して前記並列化設計支援システム3200の使用者から取得してもよい。
分割ルールの出力は以下の手順で行う。まず、当該分割元ファイルに関する制約キー項目を、物理ファイル分割制約テーブル5100と物理ファイル配置制約テーブル5200から取得する。制約キー項目が一致する場合は、当該制約キー項目の識別子を、境界項目識別子(カラム5502)に出力する。片方の制約キー項目が「*」である場合は、もう片方の制約キー項目の識別子をカラム5502の値として出力する。
例では、集計FILEを最初に分割するよう決定したものとする。集計FILEの制約キー項目識別子は、分割制約からは「*」であり、配置制約からは[1-5]である。よって、後者を出力する。これを、集計FILEの2つの分割後ファイルに対して行う。
次に、未処理の分割元ファイルのうち、処理済みである前記分割元ファイルとの間に配置制約を持つファイルを特定し、次の処理対象分割元ファイルとする(S5602)。ここで、当該分割対象分割元ファイルから生成する分割後ファイルと、前記処理済み分割元ファイルから生成する分割後ファイルとの間の対応関係を確立する。
例では、次の処理対象分割元ファイルは倉庫FILEである。倉庫FILE001を、集計FILE001に対応させる。また、倉庫FILE002を、集計FILE002に対応させる。
S5603において、前記処理対象ファイルの分割ルールを出力する。前記処理対象ファイルの分割元ファイルは、前記処理済みファイルの分割元ファイルとの間に配置制約を持つ。当該配置制約から、前記処理対象分割元ファイルの制約キー項目識別子を取得する。
次に、前記制約キー項目識別子が、前記処理対象分割元ファイルの分割制約における制約キー項目識別子と一致するか、後者が「*」であることを確認する。この条件を満たす場合、境界項目レンジ制約(カラム5503)は、前記対応関係を持つ分割後ファイルの境界識別子である。
例を用いて説明する。倉庫FILE001の分割元ファイルである倉庫FILEは、対応関係にある集計FILE001の分割元ファイルである集計FILEとの間に配置制約を持つ。物理ファイル配置制約テーブル4700基づき、制約キー項目識別子[9-13]を取得する。集計FILEの分割制約は「*」であることを確認し、[9-13]を境界項目識別子(行5530のカラム5502)とする。
行5530の境界項目レンジ制約(カラム5503)は、倉庫FILE001に対応する処理済ファイルである集計FILE001の境界項目(行5510のカラム5502)である。これを「集計FILE001.[1-5]」として、境界項目レンジ制約とする(行5530のカラム5503)。
ステップS5602とS5603を全ての入力ファイルに対して繰り返す(S5604)。以上が、ステップS5402(物理ファイル分割テンプレート生成)の処理フローの説明である。
ステップ5403は、物理ファイル配置テンプレート生成である。本ステップの出力例を図57に示す。
図57は、物理ファイル配置テンプレート情報3231の例5700である。カラム5701は配置先のノード名(並列実行サーバ名である。カラム5702は、配置すべき分割後ファイル名である。
行5710と行5720は、集計FILE001と倉庫FILE001を同一ノード(ノード1)に配置することを指示する情報である。同様に、行5730と行5740は、集計FILE002と倉庫FILE002を同一ノード(ノード2)に配置することを指示する情報である。
物理ファイル配置テンプレート5700の生成手順は以下のとおりである。物理ファイル分割テンプレート5500の各行を確認し、境界項目レンジ制約(カラム5503)が「*」以外である行を識別する。そのような行があった場合、当該行の分割後ファイル(カラム5504)と前記境界項目レンジ制約に登場する分割後ファイルを、同一ノードに配置するよう、物理ファイル配置テンプレートの行を出力する。
例えば、物理ファイル分割テンプレート5500において、行5530は上記の条件を満たす。これにより、集計FILE001と倉庫FILE001を同一ノードに配置すべきことがわかるので、物理ファイル配置テンプレート5700の行5710と行5720を出力する。
前記並列化設計支援システム3200の説明は以上である。当該システム3200の使用者は、物理ファイル分割テンプレート5500と物理ファイル配置テンプレート5700に基づき、並列化対象プログラム3301をファイル分割によって並列化する際の、入力ファイルの分割方法と配置方法を効率的に設計することができる。
例えば前記使用者は、物理ファイル分割テンプレート5500に基づき、集計FILEの分割後ファイルを集計FILE001と集計FILE002に、倉庫FILEの分割後ファイルを倉庫FILE001と倉庫FILE002とした場合の、分割時の留意点を効率的に知ることができる。すなわち、集計FILEを分割する際には、項目[1-5]の値が変化する箇所で分割を行うべきことがわかる。また、倉庫FILEを分割する際には、項目[9-13]の値の変化する箇所で分割を行うべきことがわかる。
さらに、倉庫FILEを分割し倉庫FILE001と倉庫FILE002を生成する際には、倉庫FILE001の項目[9-13]のレンジが、集計FILE001の項目[1-5]のレンジを含むべきことがわかる。かつ、倉庫FILE002の項目[9-13]のレンジが、集計FILE002の項目[1-5]のレンジを含むべきことがわかる。
さらに前記使用者は、物理ファイル配置テンプレート5700を参照することで、前記分割後ファイル群を配置する際に守るべき条件を効率的に知ることができる。例えば、集計FILE001と倉庫FILE001は同じノードに配置すべきであり、集計FILE002と倉庫FILE002は同じノードに配置すべきであることがわかる。
このように、本実施例の並列化設計支援システム3200によれば、前記使用者は、図37に示す並列化の実現のための設計行為を、効率的に行うことができる。
以下に本発明の第三の実施形態について図面を用いて詳細に説明する。第三の実施例においては、連続して実行される2つのプログラムを並列化の範囲として扱う、並列化設計支援システムを説明する。
例えばプログラムAとプログラムBがあり、プログラムAの出力ファイルXがプログラムBの入力ファイルである場合を考える。プログラムAとプログラムBの両方が、ファイル分割による並列化が可能である場合、プログラムAの実行後に、ファイルXを出力する物理ファイルマージプログラムを実行し、その後、プログラムBの実行前に、ファイルXを分割する物理ファイル分割プログラムを実行すると、ファイル分割とマージのオーバーヘッドがかかる。
そこで本実施例では、プログラムAとプログラムBの間で、ファイルのマージと再分割を行わない形態での並列化の設計を支援する、並列化設計支援システムを説明する。
本実施形態の並列化設計支援システムのブロック図は、第二の実施形態におけるブロック図32と同一であるので省略する。
図58は、本実施形態の並列化設計支援システムが備える、各種データの構成5800を示す。第二の実施例における前記並列化設計支援システム3200のデータ構成3300との差異は以下である。物理ファイル分割配置制約情報5810は、合成前物理ファイル分割制約情報5820と、合成前物理ファイル配置制約情報5830と、合成後物理ファイル分割制約情報5840と、合成後物理ファイル配置制約5850から構成される。
本実施形態における並列化支援システムの入力情報を説明する。並列化対象プログラム5861は、複数のプログラムを含む。本実施例では、第一の実施例で用いたプログラムP01と、第二の実施例で用いたプログラムP02を、並列化対象プログラム5861とする。
図59に、物理ファイル情報5862を格納する物理ファイルテーブルの例5900を示す。図に示すように、本テーブルは、第一の実施例における同テーブル400と、第二の実施例における同テーブル3500の内容を含む。プログラムP01は受注明細FILEを入力とし(行5910)、集計FILEを出力とする(行5920)。プログラムP02は、集計FILEと倉庫FILEを入力とし(行5930と行5940)、出庫指示FILEを出力とする(行5950)。
図60に、本実施例における並列化の範囲を示す。並列化範囲6010は、プログラム6020(P01)とプログラム6030(P02)である。プログラム6020が出力しプログラム6030が入力とするファイル6040は、並列化範囲6010の中間ファイルである。並列化範囲6010の入力はファイル「受注明細FILE」6050とファイル「倉庫FILE」6060である。並列化範囲6010の出力はファイル6070である。
図61は、前記並列化範囲6010を、ファイル分割によって多重度2で並列化した結果を示す。物理ファイル分割配置プログラム6170は、入力ファイル6050を、分割後ファイル「受注明細FILE001」6111と分割後ファイル「受注明細FILE002」6112に分割し、それぞれ並列実行サーバ6191と並列実行サーバ6192に配置する。
さらに、物理ファイル分割配置プログラム6170は、入力ファイル6060を、分割後ファイル「倉庫FILE001」6121と分割後ファイル「倉庫FILE002」6122に分割し、それぞれ並列実行サーバ6191と並列実行サーバ6192に配置する。
並列実行サーバ6191は、プログラムP01と同じプログラム6131を、分割後ファイル6111と分割後ファイル6121を入力ファイルとして実行する。プログラム(P01)6131は、中間ファイル(集計FILE)6141を出力する。
次に、並列実行サーバ6191は、プログラムP02と同じプログラム6151を、中間ファイル6141を入力ファイルとして実行する。プログラム6151は、出力ファイル「出庫指示FILE」6161を出力する。
同様に、並列実行サーバ6192は、プログラムP01と同じプログラム6132を、分割後ファイル6112と分割後ファイル6122を入力ファイルとして実行する。プログラム6132は、中間ファイル(集計FILE)6142を出力する。
次に、並列実行サーバ6192は、プログラムP02と同じプログラム6152を、中間ファイル6142を入力ファイルとして実行する。プログラム6152は、出力ファイル「出庫指示FILE」6162を出力する。
物理ファイルマージプログラム6180は、出力ファイル6161と出力ファイル6162を入力とし、それらをマージしたファイル6070を出力する。
このような物理ファイル分割配置プログラム6170と、物理ファイルマージプログラム6180を実現することで、並列化範囲6010内のプログラムを改変することなく、並列化範囲6010の並列実行を実現できる。そのためには、並列化範囲6010内のプログラム6020とプログラム6030の動作の知識に基づく設計行為が必要である。
本実施例は、前記物理ファイル分割配置テンプレート情報5850を出力することで、物理ファイル分割配置プログラム6170の設計を支援する、前記並列化設計支援システムを説明する。
以下、本実施形態の並列化設計支援方法の実施手順について、図62の処理フローに従い、図63から図74を用いて説明する。
(1)入力情報登録(S6201)
ステップS6201は、入力情報登録処理である。並列化対象プログラム5761が2つのプログラムから構成されること以外は、実施例1における入力情報登録処理S301と同じである。
(2)プログラム構文・依存性解析(S6202)
ステップS6202は、プログラム構文解析・依存性解析処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例1におけるプログラム構文解析・依存性解析S302を実行する。
(3)ファイルアクセスロジック生成(S6203)
ステップS6203は、ファイルアクセスロジック生成処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例1におけるファイルアクセスロジック生成処理S303を実行する。
(4)並列性判定(S6204)
ステップS6204は、並列性判定処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例1における並列性判定処理S304を実行する。
(5)論理ファイル分割配置制約生成(S6205)
ステップS6205は、論理ファイル分割配置制約生成処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例2における論理ファイル配置制約生成処理S3405を実行する。
(1)入力情報登録(S6201)
ステップS6201は、入力情報登録処理である。並列化対象プログラム5761が2つのプログラムから構成されること以外は、実施例1における入力情報登録処理S301と同じである。
(2)プログラム構文・依存性解析(S6202)
ステップS6202は、プログラム構文解析・依存性解析処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例1におけるプログラム構文解析・依存性解析S302を実行する。
(3)ファイルアクセスロジック生成(S6203)
ステップS6203は、ファイルアクセスロジック生成処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例1におけるファイルアクセスロジック生成処理S303を実行する。
(4)並列性判定(S6204)
ステップS6204は、並列性判定処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例1における並列性判定処理S304を実行する。
(5)論理ファイル分割配置制約生成(S6205)
ステップS6205は、論理ファイル分割配置制約生成処理である。並列化対象プログラム5761を構成する各プログラムについて、実施例2における論理ファイル配置制約生成処理S3405を実行する。
図63に、論理ファイル分割制約情報5860を格納する、論理ファイル分割制約テーブルの例6300を示す。行6310は、実施例1における同テーブル2600の行2610と同一である。行6320と行6330は、実施例2における同テーブル4600の行4610と行4620と同一である。
図64に、論理ファイル配置制約情報5870を格納する、論理ファイル配置制約テーブルの例6400を示す。行6410は、実施例2における同テーブル4700の行4710と同一である。
(6)物理ファイル分割配置制約生成(S6206)
ステップ6206は、物理ファイル分割配置制約生成処理である。本ステップの処理フローは、実施例2の同ステップS3405と異なる。
(6)物理ファイル分割配置制約生成(S6206)
ステップ6206は、物理ファイル分割配置制約生成処理である。本ステップの処理フローは、実施例2の同ステップS3405と異なる。
図65に、本実施例の物理ファイル分割配置制約生成ステップ6206の処理フローを示す。ステップS6501は、合成前物理ファイル分割制約生成ステップである。本ステップは、実施例2の物理ファイル分割制約生成ステップS2801を、並列化対象プログラム5761を構成する各プログラムについて実行する。
図66は、合成前物理ファイル分割制約生成ステップS6501の出力である、合成前物理ファイル分割制約情報5820に格納された合成前物理ファイル分割制約テーブルの例6600である。行6610は実施例1における物理ファイル分割制約テーブル2900の行2910と同一である。行6620と行6630は、実施例2における物理ファイル分割制約テーブル5100の行5110と行5120とそれぞれ同一である。
ステップS6502は、合成前物理ファイル配置制約生成ステップである。本ステップは、実施例2の物理ファイル配置制約生成ステップS5002を、並列化対象プログラム5761を構成する各プログラムについて実行する。
図67は、合成前物理ファイル配置制約生成ステップS6502の出力である、合成前物理ファイル配置制約テーブルの例6700である。行6710は、実施例2における物理ファイル配置制約テーブル4700の行4710と同一である。
ステップS6503は、合成方法判定ステップである。並列化対象プログラム5761を構成する各プログラムを別々に処理することで生成した、合成前物理ファイル分割制約情報5820と、合成前物理ファイル配置制約情報5830を合成し、並列化範囲5910に対する制約である、合成後物理ファイル分割制約情報5840と、合成後物理ファイル配置制約情報5850を生成する方法を判定する。
図68に、S6503の合成方法判定ステップの処理フローを示す。まず、中間ファイル5940に対する、合成前物理ファイル分割制約を識別する(S6801)。本実施例では、中間ファイル5940は集計FILEである。合成前物理ファイル分割制約テーブル6600を参照し、当該ファイルに対する合成前物理ファイル分割制約「*」を識別する。
次に、前記合成前物理ファイル分割制約に基づいて、合成方法を判定する(S6802)。例では、当該制約は「*」である。これは、プログラムP02の並列化においては、分割制約が無い(レコードの境界であれば、どこで分割してもよい)ことを示す。プログラムP01が出力する中間ファイル6041と中間ファイル6042が、集計FILEのどのような分割結果であっても問題ない。よって、合成可能と判定する。合成方法は、「配置制約の変換」と判定する。
ステップS6504は、物理ファイル分割制約合成ステップである。本ステップの出力例を図69に示す。
図69は、合成後物理ファイル分割制約情報5840を格納する合成後物理ファイル分割制約テーブル6900である。本テーブルは、並列化範囲5910の入力ファイル5950と、入力ファイル5960に対する分割制約を、それぞれ行6910と行6920に示している。
本ステップ(S6504)では、ステップ6503で判定した合成方法に従い、合成前物理ファイル分割制約情報5720から合成後物理ファイル分割制約情報5840を生成する。
合成方法が「配置制約の変換」である場合の処理方法を例を用いて説明する。合成前物理ファイル分割制約テーブル6600のうち、並列化範囲5910の入力ファイルに該当する行を、合成後物理ファイル分割制約テーブル6900に転記する。例では、受注明細FILEと倉庫FILEに該当する行(行6610と行6630)を転記する。
ステップ6505は、物理ファイル配置制約合成ステップである。本ステップの出力例を図70に示す。
図70は、合成後物理ファイル配置制約情報5850を格納する合成後物理ファイル配置制約テーブル7000である。本テーブルは、並列化範囲5910の入力ファイル5950と、入力ファイル5960に対する配置制約を、行7010に示している。
本ステップ(S6505)では、ステップ6503で判定した合成方法に従い、合成前物理ファイル配置制約情報5830から、合成後物理ファイル配置制約情報5750を生成する。処理フローを図72に示す。
合成方法が「配置制約の変換」である場合の処理の概要を、図71に示す。表現例7110は、合成前物理ファイル分割制約情報5820と合成前物理ファイル配置制約情報5830の表現例である。表現例7120は、合成後物理ファイル分割制約情報5840と合成後物理ファイル配置制約情報5850の表現例である。
表現例7120は、3つの物理ファイルとその分割制約を、ノード7111と、ノード7112と、ノード7113で表現する。配置制約を、エッジ7114で表現する。
表示例7120は、合成後物理ファイル配置制約情報7000の出力例である。並列化範囲6010に対する2つの入力ファイルに対する分割制約をノード7121とノード7122で表現する。配置制約を、エッジ7124で表現する。ノード7122は、並列化範囲6010の中間ファイルを表現する。
図72に、合成方法が「配置制約の変換」である場合の、物理ファイル配置制約合成ステップ(S6505)の処理フローを示す。
まず、配置制約のうち、中間ファイルの制約キー項目を用いている配置制約を識別する(S7201)。例では、テーブル6700の行6710の配置制約が該当する。用いている中間ファイルと制約キー項目は、集計FILEの[1-5]である。
次に、中間ファイルを出力するプログラムにおいて、WRITE文実行時に、前記制約キー項目の値を格納している出力依存変数を識別する(S7202)。例では、プログラムP01の変数R12-PCODEである。これは、プログラムP01に関するファイルレコード識別テーブル1000に基づいて識別可能である。
ステップS7203において、当該出力依存変数が間接依存する、入力論理ファイル項目を識別する。間接依存性の識別方法は、実施例1におけるステップS1703と同一である。例では、変数R12-PCODEは、論理ファイルF11の項目[9-13]に間接依存する。間接依存性の識別結果を、図21と類似の構成を用いて、図73に示す。
ステップS7204では、前記入力論理ファイル項目を、物理ファイル項目に変換する。例では、「受注明細ファイル.[9-13]」に変換する。これは、プログラムP01における論理ファイルF11は、集計FILEに該当するからである。
ステップS7201で識別した配置制約に戻り、当該制約における中間ファイルに対する制約キー項目を、ステップS7204において識別した物理ファイルの項目で置換する(S7205)。例では、図7000の行7010がその結果に該当する。また、図71の表現例では、合成前の配置制約エッジ7114を、合成後の配置制約エッジ7124のように書き換える操作に該当する。これらはともに、集計FILE.[1-5]を、受注明細FILE.[9-13]で置換した結果である。
以上のステップS7201からステップS7205を、中間ファイルに関する物理ファイル配置制約Cを全てについて実行する。全てについて実行済みであれば、本処理を終了する(S7206)。
上記の処理フローにより、合成後物理ファイル配置制約テーブル7000を出力する。以上が、本実施例のステップS6505の説明である。
ステップS6207は、物理ファイル分割配置テンプレート生成ステップである。本ステップは、実施例2における同ステップS3407と同一である。
ステップ6207の出力結果の例を図74と図75に示す。図74は、物理ファイル分割テンプレート情報5880に格納された物理ファイル分割テンプレートの例7400である。図75は、物理ファイル配置テンプレート情報5890に格納された物理ファイル配置テンプレートの例7500である。
本実施例の並列化設計支援システムの使用者は、前記物理ファイル分割配置テンプレート情報5750を参照することで、図60に示す並列化を実現するための設計行為を効率的に行うことができる。
100:並列化設計支援システム
110:記憶装置
120:メモリ
130:CPU
140:通信ポート
150:並列化設計支援プログラム
160:入力装置
170:出力装置
101:入力情報登録部
102:プログラム構文・依存性解析部
103:ファイルアクセスロジック生成部
104:並列性判定部
105:論理ファイル分割制約生成部
106:物理ファイル分割制約生成部
107:物理ファイル分割テンプレート生成部
210:入力情報
220:プログラム構文・依存性情報
230:ファイルアクセスロジック情報
240:論理ファイル分割制約情報
250:物理ファイル分割制約情報
260:物理ファイル分割テンプレート情報
110:記憶装置
120:メモリ
130:CPU
140:通信ポート
150:並列化設計支援プログラム
160:入力装置
170:出力装置
101:入力情報登録部
102:プログラム構文・依存性解析部
103:ファイルアクセスロジック生成部
104:並列性判定部
105:論理ファイル分割制約生成部
106:物理ファイル分割制約生成部
107:物理ファイル分割テンプレート生成部
210:入力情報
220:プログラム構文・依存性情報
230:ファイルアクセスロジック情報
240:論理ファイル分割制約情報
250:物理ファイル分割制約情報
260:物理ファイル分割テンプレート情報
Claims (9)
- プログラムの並列化を実現するためのデータ分割配置方法の設計を支援するコンピュータシステムであって、
並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録する入力情報登録部と、
前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析部と、
前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成部と、
前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定部と、
前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成部と、
前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成部と、
を備える、
ことを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援するコンピュータシステム。 - 前記コンピュータシステムであって、
並列化対象プログラムが複数の入力ファイルを扱うプログラムである場合に、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記ファイル分割方法指定情報に基づいて、前記ファイル分割方法指定情報で指定された方法で生成する分割後ファイルを、並列実行ノードへ配置する際の制約の情報を生成する、ファイル配置制約生成部を備えることと、
前記ファイル分割方法指定情報生成部は、前記ファイル分割制約情報と、前記物理ファイル情報に加え、前記ファイル配置制約情報に基づいて、ファイル分割方法指定情報を生成することと、
前記ファイル配置制約情報と、前記ファイル分割方法指定情報に基づいて、分割後ファイルの配置方法を指定する情報を生成する、ファイル配置方法指定情報生成部を備えること、
を特徴とする、請求項1に記載のコンピュータシステム。 - 前記コンピュータシステムであって、
並列化対象プログラムが、第一のプログラムと、第二のプログラムから構成され、第一のプログラムの出力が、第二のプログラムの入力である場合に、並列化範囲を第一のプログラムの開始から第二のプログラムまでと定義し、
前記ファイル分割制約生成部は、前記並列化範囲を並列化するためのファイル分割制約を生成することと、
前記ファイル配置制約生成部は、前記並列化範囲を並列化するためのファイル配置制約を生成することと、
前記ファイル分割方法指定情報生成部は、前記並列化範囲を並列化するためのファイル分割方法指定情報を生成することと、
前記ファイル配置方法指定情報生成部は、前記並列化範囲を並列化するためのファイル配置方法指定情報を生成すること、
を特徴とする、請求項2に記載のコンピュータシステム。 - コンピュータを、
プログラムの並列化を実現するためのデータ分割配置方法設計を支援するシステムとして動作させるプログラムであって、
前記プログラムは、
並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録する入力情報登録部と、
前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析部と、
前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成部と、
前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定部と、
前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成部と、
前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成部と、
を備える、
ことを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援するプログラム。 - 前記プログラムであって、
並列化対象プログラムが複数の入力ファイルを扱うプログラムである場合に、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記ファイル分割方法指定情報に基づいて、前記ファイル分割方法指定情報で指定された方法で生成する分割後ファイルを、並列実行ノードへ配置する際の制約の情報を生成する、ファイル配置制約生成部を備えることと、
前記ファイル分割方法指定情報生成部は、前記ファイル分割制約情報と、前記物理ファイル情報に加え、前記ファイル配置制約情報に基づいて、ファイル分割方法指定情報を生成することと、
前記ファイル配置制約情報と、前記ファイル分割方法指定情報に基づいて、分割後ファイルの配置方法を指定する情報を生成する、ファイル配置方法指定情報生成部を備えること、
を特徴とする、請求項4に記載のプログラム。 - 前記プログラムであって、
並列化対象プログラムが、第一のプログラムと、第二のプログラムから構成され、第一のプログラムの出力が、第二のプログラムの入力である場合に、並列化範囲を第一のプログラムの開始から第二のプログラムまでと定義し、
前記ファイル分割制約生成部は、前記並列化範囲を並列化するためのファイル分割制約を生成することと、
前記ファイル配置制約生成部は、前記並列化範囲を並列化するためのファイル配置制約を生成することと、
前記ファイル分割方法指定情報生成部は、前記並列化範囲を並列化するためのファイル分割方法指定情報を生成することと、
前記ファイル配置方法指定情報生成部は、前記並列化範囲を並列化するためのファイル配置方法指定情報を生成すること、
を特徴とする、請求項5に記載のプログラム。 - プログラムの並列化を実現するためのデータ分割配置方法の設計を支援する方法であって、
並列化対象プログラムと、並列実行の多重度と、物理ファイル情報を、入力装置で受付けて記憶装置に登録するステップと、
前記並列化対象プログラムを解析し、プログラム構文・依存性解析情報を生成するプログラム構文・依存性解析ステップと、
前記プログラム構文・依存性解析情報に基づき、前記並列化プログラムが行うファイル入出力処理の制御構造の情報と、前記並列化プログラムが行うファイル入出力処理に使用されるプログラム変数による、入出力ファイルへの依存性の情報から構成される、ファイルアクセスロジック情報を生成する、ファイルアクセスロジック生成ステップと、
前記ファイルアクセスロジック情報に基づき、前記並列化対象プログラムの並列性を判定する、並列性判定ステップと、
前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記物理ファイル情報に基づいて、前記並列化対象プログラムに対する入力ファイルを、分割する際の制約の情報を生成する、ファイル分割制約生成ステップと、
前記ファイル分割制約情報と、前記多重度に基づいて、前記多重度での前記並列化対象プログラムの並列実行を実現するための、前記並列化対象プログラムの入力ファイルの分割方法を指定する情報を生成する、ファイル分割方法指定情報生成ステップと、
から構成される、ことを特徴とする、プログラムの並列化のためのデータ分割配置方法の設計を支援する方法。 - 前記設計支援方法であって、
並列化対象プログラムが複数の入力ファイルを扱うプログラムである場合に、前記プログラム構文・依存性解析情報と、前記ファイルアクセスロジック情報と、前記ファイル分割方法指定情報に基づいて、前記ファイル分割方法指定情報で指定された方法で生成する分割後ファイルを、並列実行ノードへ配置する際の制約の情報を生成する、ファイル配置制約生成ステップを備えることと、
前記ファイル分割方法指定情報生成ステップは、前記ファイル分割制約情報と、前記物理ファイル情報に加え、前記ファイル配置制約情報に基づいて、ファイル分割方法指定情報を生成することと、
前記ファイル配置制約情報と、前記ファイル分割方法指定情報に基づいて、分割後ファイルの配置方法を指定する情報を生成する、ファイル配置方法指定情報生成ステップを備えること、
を特徴とする、請求項7に記載の設計支援方法。 - 前記設計支援方法であって、
並列化対象プログラムが、第一のプログラムと、第二のプログラムから構成され、第一のプログラムの出力が、第二のプログラムの入力である場合に、並列化範囲を第一のプログラムの開始から第二のプログラムまでと定義し、
前記ファイル分割制約生成ステップは、前記並列化範囲を並列化するためのファイル分割制約を生成することと、
前記ファイル配置制約生成ステップは、前記並列化範囲を並列化するためのファイル配置制約を生成することと、
前記ファイル分割方法指定情報生成ステップは、前記並列化範囲を並列化するためのファイル分割方法指定情報を生成することと、
前記ファイル配置方法指定情報生成ステップは、前記並列化範囲を並列化するためのファイル配置方法指定情報を生成すること、
を特徴とする、請求項8に記載の設計支援方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-083117 | 2011-04-04 | ||
JP2011083117A JP2014157384A (ja) | 2011-04-04 | 2011-04-04 | 並列化設計支援システム、プログラム、および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012137390A1 true WO2012137390A1 (ja) | 2012-10-11 |
Family
ID=46968811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2011/077974 WO2012137390A1 (ja) | 2011-04-04 | 2011-12-02 | 並列化設計支援システム、プログラム、および方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2014157384A (ja) |
WO (1) | WO2012137390A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870263A (zh) * | 2012-12-17 | 2014-06-18 | 上海华虹宏力半导体制造有限公司 | 掩模版图最小物理规则验证文件的制作方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016079802A1 (ja) * | 2014-11-18 | 2016-05-26 | 株式会社日立製作所 | バッチ処理システムおよびその制御方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139212A (ja) * | 1992-10-30 | 1994-05-20 | Hitachi Ltd | 分散記憶型並列計算機のためのデータ分割パタンの評価方法、それを用いた並列プログラム生成方法およびそのためのプログラム実行時間の推定方法 |
JPH0744508A (ja) * | 1993-08-03 | 1995-02-14 | Hitachi Ltd | プログラム分割方法 |
JPH10214257A (ja) * | 1997-01-30 | 1998-08-11 | Fujitsu Ltd | 並列計算機 |
-
2011
- 2011-04-04 JP JP2011083117A patent/JP2014157384A/ja not_active Withdrawn
- 2011-12-02 WO PCT/JP2011/077974 patent/WO2012137390A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139212A (ja) * | 1992-10-30 | 1994-05-20 | Hitachi Ltd | 分散記憶型並列計算機のためのデータ分割パタンの評価方法、それを用いた並列プログラム生成方法およびそのためのプログラム実行時間の推定方法 |
JPH0744508A (ja) * | 1993-08-03 | 1995-02-14 | Hitachi Ltd | プログラム分割方法 |
JPH10214257A (ja) * | 1997-01-30 | 1998-08-11 | Fujitsu Ltd | 並列計算機 |
Non-Patent Citations (1)
Title |
---|
SOSUKE FUJII ET AL.: "Computer-Assisted Parallelization by Domain Division of Physics Numerical Simulation Program", IEICE TECHNICAL REPORT, vol. 97, no. 391, 21 November 1997 (1997-11-21), pages 65 - 72 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870263A (zh) * | 2012-12-17 | 2014-06-18 | 上海华虹宏力半导体制造有限公司 | 掩模版图最小物理规则验证文件的制作方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2014157384A (ja) | 2014-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7090778B2 (ja) | 影響分析 | |
US11106440B2 (en) | Source code translation | |
US10127250B2 (en) | Data transformation system, graphical mapping tool and method for creating a schema map | |
JP4422345B2 (ja) | スクリプト駆動ツールの並列処理アプリケーション | |
AU2006261760B2 (en) | Managing parameters for graph-based computations | |
US7860863B2 (en) | Optimization model for processing hierarchical data in stream systems | |
US7861222B2 (en) | Discoscript: a simplified distributed computing scripting language | |
US20100175049A1 (en) | Scope: a structured computations optimized for parallel execution script language | |
Rompf et al. | Functional pearl: a SQL to C compiler in 500 lines of code | |
Damji et al. | Learning Spark | |
CN100517222C (zh) | 支持转换引擎与映射规则相分离的模型转换装置及其方法 | |
Jovanovic et al. | Engine independence for logical analytic flows | |
US10552440B1 (en) | System for performing data transformations using a set of independent software components | |
US10545741B2 (en) | Information processing apparatus, method of compiling, and storage medium | |
WO2012137390A1 (ja) | 並列化設計支援システム、プログラム、および方法 | |
Gulati et al. | Apache Spark 2. x for Java developers | |
Preethi et al. | Big data analytics using Hadoop tools—Apache Hive vs Apache Pig | |
Burgueño et al. | LinTraP: Primitive Operators for the Execution of Model Transformations with LinTra. | |
JP4405571B1 (ja) | プログラム | |
US12038921B2 (en) | Transforming operations of a computer program for execution at a database | |
US20230359668A1 (en) | Dataflow graph datasets | |
Fabry et al. | Engineering a Converter Between Two Domain-Specific Languages for Sorting | |
Adam et al. | Ohua-powered, Semi-transparent UDF’s in the Noria Database | |
Evans et al. | CircuitFlow: A Domain Specific Language for Dataflow Programming (with appendices) | |
Paligiannis | Handling of schema evolution in machine learning pipelines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11862964 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 11862964 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |