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;
generating compiler directives to specify the data-sharing attributes of the variables; and
compiling source code of the computer program that has not been aggressively inlined in accordance with the generated compiler directives.
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.
34 Citations
18 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; generating compiler directives to specify the data-sharing attributes of the variables; and compiling source code of the computer program that has not been aggressively inlined in accordance with the generated compiler directives. - 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 of the computer program, 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 variables of the loop of the computer program, the analysis indicating whether a data-sharing attribute of a variable is shared, private, or unresolved; generate one or more compiler directives to specify whether data-sharing attributes of the variables are shared, private, or unresolved; and output an indication of the generated compiler directives. - View Dependent Claims (13, 14)
-
-
15. 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 at least one of the loops of the computer program, 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; generate a compiler directive to specify the data-sharing attributes of variables as shared or private; and output an indication of the generated compiler directive; and a processor that executes the computer-executable instructions stored in the one or more computer-readable storage media. - View Dependent Claims (16, 17, 18)
-
Specification