For candidates of a plurality of data dividing patterns which are expressed by using a data dividing pattern library, in a case where data and program are allocated to each processor by a method which has been predetermined in correspondence to each data dividing pattern and are executed, an evaluating program to measure an amount about the processing time is produced. By executing the evaluating program by a sequential computer, a plurality of data division candidates are compared and evaluated and the optimum data division is selected. Distributed memory parallel programs are produced in accordance with the optimum data division. |
Citations|
| US5293620 | Aug 10, 1992 | Mar 8, 1994 | Digital Equipment Corporation | Method apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors | | US5301320 | Jun 28, 1991 | Apr 5, 1994 | Digital Equipment Corporation | Workflow management and control system | | US5303369 | Aug 31, 1990 | Apr 12, 1994 | Texas Instruments Incorporated | Scheduling system for multiprocessor operating system | | US5325493 | Mar 30, 1993 | Jun 28, 1994 | Hewlett-Packard Company | System for distributing command/data packets tagged by their unit identifier for parallel processing by a ready processing unit and recombination |
Referenced by|
| US5649198 | Sep 16, 1996 | Jul 15, 1997 | Fujitsu Limited | Mapping calculation units by dividing a calculation model which can be calculated in parallel on an application program | | US5721928 | May 16, 1996 | Feb 24, 1998 | Hitachi, Ltd. | Method for partitioning computation | | US5778224 | Jan 22, 1997 | Jul 7, 1998 | Hitachi, Ltd. | Method of executing a plurality of transactions and a distributed processing system for performing such a method | | US6009262 | May 7, 1997 | Dec 28, 1999 | Kabushiki Kaisha Toshiba | Parallel computer system and method of communication between the processors of the parallel computer system | | US6282704 | Dec 1, 1998 | Aug 28, 2001 | Hitachi, Ltd. | Method for analyzing array summary for loop including loop exit statement | | US7036123 | Apr 25, 2001 | Apr 25, 2006 | Sun Microsystems, Inc. | System using fair-share scheduling technique to schedule processes within each processor set based on the number of shares assigned to each process group | | US7555745 | Nov 18, 2004 | Jun 30, 2009 | Fujitsu Limited | Program and apparatus for translating language, and program converting method | | US7590620 | Sep 29, 2004 | Sep 15, 2009 | Google Inc. | System and method for analyzing data records | | US7730119 | Jul 21, 2006 | Jun 1, 2010 | Sony Computer Entertainment Inc. | Sub-task processor distribution scheduling | | US7844959 | Sep 29, 2006 | Nov 30, 2010 | Microsoft Corporation | Runtime optimization of distributed execution graph | | US8126909 | Jul 31, 2009 | Feb 28, 2012 | Google Inc. | System and method for analyzing data records | | US8201142 | Sep 29, 2006 | Jun 12, 2012 | Microsoft Corporation | Description language for structured graphs |
Claims1. A method for evaluating a data dividing patterns used in converting a sequential program into parallel programs, executed by an apparatus, comprising the steps of: - (a) dividing data which is processed by a sequential source program to be converted into parallel programs, into a plurality of data groups to be processed in parallel in accordance with one of a plurality of data dividing pattern candidates;
- (b) allocating each of said data groups to one of a plurality of processors included in a distributed memory parallel computer system, based on a predetermined data allocation rule;
- (c) allocating each of a plurality of partial processes required to execute a process requested by said sequential source program, to a corresponding one of said processors, based on a predetermined process allocation rule;
- (d) estimating, as evaluation information of said one of the data dividing pattern candidates for suitably allocating said plurality of data groups and partial processes to each of said plurality of processors, an amount related to an executing time required to execute in parallel the plurality of partial processes as allocated to said processors in the step (c), in a state in which said plurality of data groups are allocated to said processors in said step (b);
- (e) repeating said steps (a) to (d) with respect to each of others of said plurality of dividing patterns candidates; and
- (f) assigning said evaluation information to said amount related to said executing time estimated to each of said plurality of dividing patterns candidates based on predetermined priority, and ordering said plurality of dividing patterns candidates with ascending order of said evaluation information.
2. A method according to claim 1, wherein said estimating step of said amount related to the executing time includes: - generating an evaluating program by adding to said sequential program a program code for collecting, at the time of executing said sequential program, said amount to measure the executing time; and
- executing said evaluating program by a sequential computer.
3. A method according to claim 1, wherein said amount related to the executing time includes a first amount related to an executing time required by each processor for execution of a processing assigned to said each processor, and a second amount related to a data transfer time required by said each processor for transfer of data between said each processor and others of said processors. 4. A method according to claim 1, wherein said amount related to the executing time includes: - a distribution of calculation loads among said processors;
- a number of arithmetic operations executed by each processor for processing a unit amount of reception data received from other processors; and
- an average amount of reception data received by said each processor during one reception operation.
5. A method according to claim 1, further having the step of: - selecting one of said plurality of dividing pattern candidates for each of a plurality of data processed by said sequential program, so that one combination of dividing pattern candidates are selected for said plurality of data, based on said evaluation information;
- wherein said steps (a) and (b) are executed for each of said plurality of data, based upon one dividing pattern candidates selected for said each data;
- wherein said repeating step (e) includes the steps of:
- repeating said step (f) before repetition of said steps (a) to (d), so that another combination of dividing pattern candidates is selected for said plurality of data; and
- executing the steps (a) to (d) for said another combination.
6. A method according to claim 1, further having the step of: - registering each of said data dividing patterns into a library each in terms of data dividing functions each indicative of a corresponding relation between an index of an element of an array data to be divided and a number of serial of said processors to which said element should be allocated; and
- wherein said step (a) includes a step of:
- selecting one of the data dividing functions registered in said library for array data appearing in the sequential program and to be divided into data groups.
7. A method according to claim 1, wherein the data group allocation determining step (b) is executed in accordance with a data allocation rule which has been predetermined in correspondence to said one data dividing pattern used in said step (a). 8. A method according to claim 1, wherein the process allocation step (c) is executed in a manner such that a processing to define a value of data belonging to one of said data groups is allocated to one of said processors to which one processor said one data group has been allocated. 9. A method according to claim 1, further having the step of selecting one of said plurality of data dividing pattern candidates which is suitable to divide the data of said sequential program as to minimize said executing time, on the basis of amounts each evaluated for each of said plurality of data dividing patterns. 10. A method according to claim 9, wherein said amount related to the executing time includes: - a distribution of calculation loads among said processors;
- a number of arithmetic operations executed by each processor for processing a unit amount of reception data required from other processors; and
- an average amount of reception data received by said each processor during one reception operation.
11. A method according to claim 9, wherein the selecting step of said suitable data dividing pattern candidate is executed further on the basis of a predetermined evaluation reference to determine whether said candidate is omitted or not. 12. A method according to claim 11, wherein the selecting step of said suitable data dividing pattern candidate is executed further on the basis of characteristics of said distributed memory parallel computer. 13. A method according to claim 9, further having a step of: - displaying results of said estimating each with respect to one of said plurality of data dividing patterns candidates; and
- selecting said suitable data dividing pattern candidates, as instructed by a user.
14. A method according to claim 13, wherein said amount related to the executing time includes: - a distribution of calculation loads among said processors;
- a number of arithmetic operations executed by each processor for processing a unit amount of reception data received from other processors; and
- an average amount of reception data received by said each processor during one reception operation.
15. A method according to claim 9, further having the steps of: - executing again said steps (a) and (b) for said selected data dividing pattern candidate; and
- generating parallel programs to be executed by said distributed memory parallel computer system from said sequential program, in accordance with results of said steps (a) and (b) executed for said selected data dividing pattern candidate.
16. A method for evaluating an amount related to an executing time of a program to be executed by a distributed memory parallel computer system, executed by an apparatus, the steps including: - (a) dividing data which is included in a sequential program and should be processed by a plurality of processors which belongs to said computer system, into a plurality of data groups, in accordance with a predetermined data dividing pattern;
- (b) allocating each of said plurality of data groups to a corresponding one of said processors;
- (c) dividing a process executed by said sequential program into a plurality of partial processes to be executed in parallel, and allocating each of said partial processes to one of said processors in such a manner that one of said processors executes a statement to define a value of data belonging to one of the data groups each of which is allocated to said one processor; and
- (d) evaluating an amount related to an executing required for execution of said partial processes by said processors, including:
- inserting into said sequential program, data transmission commands and data reception commands both of which are required for execution of said partial processes by said processors;
- wherein said evaluating is executed based upon the sequential program modified by said inserting.
17. A method according to claim 16, wherein said measuring step (d) further includes the steps of: - measuring (1) a total number of data elements which does not belong to one of said data groups assigned to each processor, among data elements which are used by one of the plurality of partial processes assigned to said each processor, (2) a total number of using times by said each processor, of said data elements which does not belong to said one data group assigned to said each processor, (3) a total number of execution of reception operations required in order for said each processor to receive said data elements from other ones of said processors, and (4) a total amount of arithmetic or logical operations executed by one process assigned to each processor.
18. A method according to claim 16, wherein the measuring step further includes the step of: - inserting into the sequential program, first program codes which are necessary to execute said steps (a), (b), and (c), and second program codes which are necessary to measure said amount related to said executing time of said sequential program modified by said inserting of said first and second program codes.
19. A method according to claim 18, wherein said executing of said modified sequential program is done by a sequential computer. |