ASSISTING PARALLELIZATION OF A COMPUTER PROGRAM
First Claim
1. A method performed by a computing device for assisting in parallelization of a computer program, the computer program having source code, the method comprising:
- executing instrumented code of the computer program to collect performance statistics information relating to execution of loops within the computer program;
presenting to a user performance statistics information collected for a loop within the computer program;
generating inlined source code of the loop, the inlined source code generated by aggressively inlining invoked functions substantially without regard to compilation performance, execution performance, or both;
analyzing the inlined source code to determine the data-sharing attributes of the variables of the loop;
providing feedback on issues found when determining data-sharing attributes of the variables of the loop; and
generating compiler directives to specify the data-sharing attributes of the variables.
1 Assignment
0 Petitions
Accused Products
Abstract
A parallelization assistant tool system to assist in parallelization of a computer program is disclosed. The system directs the execution of instrumented code of the computer program to collect performance statistics information relating to execution of loops within the computer program. The system provides a user interface for presenting to a programmer the performance statistics information collected for a loop within the computer program so that the programmer can prioritize efforts to parallelize the computer program. The system generates inlined source code of a loop by aggressively inlining functions substantially without regard to compilation performance, execution performance, or both. The system analyzes the inlined source code to determine the data-sharing attributes of the variables of the loop. The system may generate compiler directives to specify the data-sharing attributes of the variables.
-
Citations
20 Claims
-
1. A method performed by a computing device for assisting in parallelization of a computer program, the computer program having source code, the method comprising:
-
executing instrumented code of the computer program to collect performance statistics information relating to execution of loops within the computer program; presenting to a user performance statistics information collected for a loop within the computer program; generating inlined source code of the loop, the inlined source code generated by aggressively inlining invoked functions substantially without regard to compilation performance, execution performance, or both; analyzing the inlined source code to determine the data-sharing attributes of the variables of the loop; providing feedback on issues found when determining data-sharing attributes of the variables of the loop; and generating compiler directives to specify the data-sharing attributes of the variables. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer-readable storage medium storing computer-executable instructions for controlling a computing device to determine a data-sharing attribute of variables of a computer program, the computer-executable instructions comprising instructions that:
-
generate inlined source code for a loop, the inlined source code generated by aggressively inlining invoked functions substantially without regard to compilation performance or execution performance; analyze the inlined source code to resolve the data-sharing attributes of the loop, the analysis indicating whether a data-sharing attribute of a variable is shared, private, or unresolved; and output an indication of whether the data-sharing attributes of the variables are shared, private, or unresolved. - View Dependent Claims (13, 14, 15)
-
-
16. A computing system for assisting in parallelization of a computer program, the computer program having source code, the computing system comprising:
-
one or more computer-readable storage media storing computer-executable instructions that present to a user performance statistics information collected for loops of the computer program, the performance statistics information for allowing the user to prioritize efforts to parallelize the computer program; generate an inlined source code of the loop, the inlined source code generated by aggressively inlining invoked functions substantially without regard to compilation performance, execution performance, or both; analyze the inlined source code to resolve data-sharing attributes of variables of the loop; and output an indication of whether the data-sharing attributes of variables are shared, private, or unresolved; and a processor that executes the computer-executable instructions stored in the one or more computer-readable storage media. - View Dependent Claims (17, 18, 19, 20)
-
Specification