Parallelization Assistant Tool for Compiler Directive Generation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current computer programs struggle to take advantage of increasing levels of parallelism in High Performance Computer (HPC) systems due to complexity in architectures and program development, requiring manual programmer intervention for compiler directives, which can lead to incorrect behavior and detection challenges.
Innovation Solution
A Parallelization Assistant Tool (PAT) system that combines compilation analysis, performance statistics, and data-sharing attribute analysis to assist programmers in modifying source code and adding compiler directives, providing tools to identify and resolve data-sharing attributes, thus enabling effective parallelization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If programmers manually add compiler directives to guide parallelization, then the program can take advantage of increased parallelism in HPC systems, but the complexity of determining correct directives and verifying behavior increases significantly
Solution Approach 1:
The system performs self-analysis by automatically determining data-sharing attributes of variables through static analysis of the program code. This eliminates the need for programmers to manually analyze and specify data-sharing attributes, allowing the system to serve itself in identifying parallelization opportunities and generating appropriate compiler directives.
Solution Approach 2:
The system provides feedback to programmers by presenting determined data-sharing attributes and generated compiler directives for review. This feedback mechanism allows programmers to verify the system's analysis results and make corrections if needed, ensuring correctness while reducing the overall complexity of the parallelization process.
2Ease of operation
If compilers automatically determine data-sharing attributes, then programmer intervention is reduced, but the accuracy and reliability of attribute determination may decrease
Solution Approach 1:
The compiler performs automatic static analysis to determine data-sharing attributes of variables without requiring programmer input. The system examines program code, control flow, and data dependencies to autonomously identify how variables are shared across parallel execution contexts, providing reliable attribute determination through systematic analysis.
Solution Approach 2:
The system provides determined data-sharing attributes as feedback to programmers for verification. This allows programmers to review the automatic determination results and correct any inaccuracies, ensuring high reliability while maintaining ease of operation through the primary automatic determination capability.
3Measurement precision
If the system presents detailed performance statistics and analysis information to programmers, then the accuracy of parallelization decisions improves, but the time and effort required to review and process this information increases
Solution Approach 1:
The system performs preliminary analysis by automatically determining data-sharing attributes and generating compiler directives before the programmer needs to make parallelization decisions. This preliminary action provides programmers with ready-made, analyzed information that reduces the time and effort required for review while maintaining high decision accuracy through systematic pre-analysis.
Solution Approach 2:
The system presents determined attributes and generated directives as feedback to programmers, allowing them to review and verify the analysis results. This feedback mechanism provides accurate information in a structured format that minimizes review time while maintaining decision accuracy through the system's comprehensive preliminary analysis.
Data Source
AI summary
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.


