Runtime profitability control for speculative automatic parallelization
First Claim
1. A method for compilation comprising:
- analyzing source code;
identifying candidate code for parallelization, wherein said candidate code comprises a loop;
determining a profitability of parallelizing the candidate code, wherein determining said profitability comprises;
parallelizing the loop, in response to determining a predicted execution time of a parallelized version of the loop is less than an execution time of a non-parallelized version of said loop by at least a given amount; and
forgoing parallelization of the loop, in response to determining a predicted execution time of said parallelized version is not less than an execution time of the non-parallelized version of said loop by at least the given amount;
generating object code corresponding to the source code, wherein said object code includes both a non-parallelized version of the candidate code and a parallelized version of the candidate code.
2 Assignments
0 Petitions
Accused Products
Abstract
A compilation method and mechanism for parallelizing program code. A method for compilation includes analyzing source code and identifying candidate code for parallelization. The method includes parallelizing the candidate code, in response to determining said profitability meets a predetermined criteria; and generating object code corresponding to the source code. The generated object code includes both a non-parallelized version of the candidate code and a parallelized version of the candidate code. During execution of the object code, a dynamic selection between execution of the non-parallelized version of the candidate code and the parallelized version of the candidate code is made. Changing execution from said parallelized version of the candidate code to the non-parallelized version of the candidate code, may be in response to determining a transaction failure count meets a pre-determined threshold. Additionally, changing execution from one version to the other may be in further response to determining an execution time of the parallelized version of the candidate code is greater than an execution time of the non-parallelized version of the candidate code.
22 Citations
15 Claims
-
1. A method for compilation comprising:
-
analyzing source code; identifying candidate code for parallelization, wherein said candidate code comprises a loop; determining a profitability of parallelizing the candidate code, wherein determining said profitability comprises; parallelizing the loop, in response to determining a predicted execution time of a parallelized version of the loop is less than an execution time of a non-parallelized version of said loop by at least a given amount; and forgoing parallelization of the loop, in response to determining a predicted execution time of said parallelized version is not less than an execution time of the non-parallelized version of said loop by at least the given amount; generating object code corresponding to the source code, wherein said object code includes both a non-parallelized version of the candidate code and a parallelized version of the candidate code. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer readable storage medium comprising program instructions, wherein the program instructions are executable to:
-
analyze source code; identify candidate code for parallelization, wherein said candidate code comprises a loop; determine a profitability of parallelizing the candidate code, wherein in determining said profitability, the program instructions are executable to; parallelize the loop, in response to determining a predicted execution time of a parallelized version of the loop is less than an execution time of a non-parallelized version of said loop by at least a given amount; and forgo parallelization of the loop, in response to determining a predicted execution time of said parallelized version is not less than an execution time of the non-parallelized version of said loop by at least the given amount; generate object code corresponding to the source code, wherein said object code includes both a non-parallelized version of the candidate code and a parallelized version of the candidate code. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A computing system comprising:
-
a processor; a storage medium configured to store application source code; and a storage medium comprising program instructions, wherein the program instructions are executable by the processor to; analyze source code; identify candidate code for parallelization, wherein said candidate code comprises a loop; determine a profitability of parallelizing the candidate code, wherein in determining said profitability, the program instructions are executable to; parallelize the loop, in response to determining a predicted execution time of a parallelized version of the loop is less than an execution time of a non-parallelized version of said loop by at least a given amount; and forgo parallelization of the loop, in response to determining a predicted execution time of said parallelized version is not less than an execution time of the non-parallelized version of said loop by at least the given amount; generate object code corresponding to the source code, wherein said object code includes both a non-parallelized version of the candidate code and a parallelized version of the candidate code. - View Dependent Claims (15)
-
Specification