PARALLELING PROCESSING METHOD, SYSTEM AND PROGRAM
First Claim
1. A computer implemented code generating method generating codes to be assigned to, and executed in parallel by, individual processor devices in a multiprocessor system, the method comprising the steps of:
- receiving source code of a program, the source code including a plurality of blocks connected one to another;
clustering the blocks by detecting a strongly connected component;
unrolling clusters to find a cluster that exceeds a predetermined threshold;
making at least one copy of the cluster found in the unrolling step; and
providing a process flow in which the cluster and the at least one copy of the cluster together form parallelized pipelines.
1 Assignment
0 Petitions
Accused Products
Abstract
Paralleling processing system and method. When clusters are formed based on strongly connected components, a single cluster (fat cluster) having at least a predetermined number of blocks, or an expected processing time exceeding a predetermined threshold, is formed. The fat cluster is subjected to an unrolling process to make multiple copies of the processing of the fat cluster and to assign the copies to individual processors. Processing of the fat cluster is executed by the multiple processor devices in a pipelined manner. If a fat cluster to be iteratively executed cannot be executed in the pipelined manner because a processing result of an nth iteration of the fat cluster depends on a processing result of a preceding iteration of the fat cluster an input value needed for execution of the fat cluster is generated based on a certain prediction, and the fat cluster is speculatively executed.
-
Citations
20 Claims
-
1. A computer implemented code generating method generating codes to be assigned to, and executed in parallel by, individual processor devices in a multiprocessor system, the method comprising the steps of:
-
receiving source code of a program, the source code including a plurality of blocks connected one to another; clustering the blocks by detecting a strongly connected component; unrolling clusters to find a cluster that exceeds a predetermined threshold; making at least one copy of the cluster found in the unrolling step; and providing a process flow in which the cluster and the at least one copy of the cluster together form parallelized pipelines. - View Dependent Claims (2, 3, 4)
-
-
5. A paralleling execution method for causing processing to be assigned to, and executed in parallel by, individual processor devices in a multiprocessor computer system, the method comprising the steps of:
-
receiving source code of a program representing the processing, the source code including a plurality of blocks connected one to another; clustering the blocks by detecting a strongly connected component; unrolling clusters to find a cluster that exceeds a predetermined threshold; making at least one copy of the cluster found in the unrolling step; providing a process flow in which the cluster and the at least one copy of the cluster together form parallelized pipelines; generating a code for each of the clusters; compiling the codes to obtain executable codes; and causing the executable codes to be assigned to and executed by individual processors on a runtime environment. - View Dependent Claims (6, 7, 8)
-
-
9. A paralleling execution system for causing processing to be assigned to, and executed in parallel by, individual processor devices in a multiprocessor system, the paralleling execution system comprising:
-
storage means for storing source code of a program representing the processing, the source code including a plurality of blocks connected one to another; clustering means for clustering the blocks by detecting a strongly connected component; cluster unrolling means for (i) finding a cluster that exceeds a predetermined threshold, (ii) making at least one copy of the cluster thus found, and (iii) providing a process flow in which the cluster and the at least one copy of the cluster together form parallelized pipelines; means for generating a code for each of the clusters; a compiler for compiling the codes to obtain executable codes, respectively; and means for causing the executable codes to be assigned to and executed by individual processors in a runtime environment. - View Dependent Claims (10, 11, 12)
-
-
13. A computer readable article of manufacture tangibly embodying a computer readable code generating program which, when executed through processing of a computer to generate codes to be assigned to, and executed in parallel by, individual processor devices in a multiprocessor system, causes the computer to execute the steps of:
-
receiving source code of a program, the source code including a plurality of blocks connected one to another; clustering the blocks by detecting a strongly connected component; unrolling clusters to find a cluster that exceeds a predetermined threshold; making at least one copy of the cluster found in the unrolling step; and providing a process flow in which the cluster and the at least one copy of the cluster together form parallelized pipelines. - View Dependent Claims (14, 15, 16)
-
-
17. A computer readable article of manufacture tangibly embodying a computer readable paralleling execution program which, when executed, causes processing to be assigned to, and executed in parallel by, individual processor devices in a multiprocessor system, by causing the multiprocessor system to execute the steps of:
-
receiving source code of a program representing the processing, the source code including a plurality of blocks connected one to another; clustering the blocks by detecting a strongly connected component; unrolling clusters to find a cluster that exceeds a predetermined threshold; making at least one copy of the cluster found in the unrolling step; providing a process flow in which the cluster and the at least one copy of the cluster together form parallelized pipelines; generating a code for each of the clusters; compiling the codes to obtain executable codes, and causing the executable codes to be assigned to and executed by the individual processors in a runtime environment. - View Dependent Claims (18, 19, 20)
-
Specification