Compiler Parallelism Extraction via Dependency Graphs
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing software compilation processes fail to optimally identify and exploit parallelism in source code for execution on multiple-processors, leading to sub-optimal utilization of growing processing power in computers and similar devices.
Innovation Solution
The development of a compilation process that generates a whole-program dependency graph and functional dataflow graph to identify and extract parallelism, transforming recursive procedures and indirect function calls into iterative forms, and converting loops to set operations to maximize parallel execution on multiple processors.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If programmers manually identify parallelism in source code, then some parallel execution capability is achieved, but the identification is inexact and inconsistent leading to sub-optimal compilation
Solution Approach 1:
The patent replaces manual programmer identification of parallelism with an automated compiler-based analysis system. The compiler generates a whole-program dependency graph and functional dataflow graph to automatically identify parallelism opportunities, eliminating the inexact and inconsistent manual identification process while improving both productivity and measurement precision.
2Ease of manufacture
If existing compilation processes are used, then source code is converted to executable, but parallelism is not optimally identified or exploited
Solution Approach 1:
The patent introduces preliminary analysis actions in the compilation process by generating whole-program dependency graphs and functional dataflow graphs before code generation. This preliminary identification of parallelism allows the compiler to optimize the executable code to exploit parallelism on multi-processor systems, thereby improving productivity without complicating the ease of manufacture.
3Productivity
If more complex analysis methods are used to identify parallelism, then better exploitation of multi-processor power is achieved, but the compilation process becomes more complex
Solution Approach 1:
The patent segments the compilation process into distinct analysis phases: generating a whole-program dependency graph, creating a functional dataflow graph, and then using these graphs to identify and exploit parallelism. This segmentation makes the complex analysis manageable and systematic, improving parallelism exploitation while organizing the compilation process complexity into structured, separate steps.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
A method of program compilation to improve parallelism during the linking of the program by a compiler. The method includes converting statements of the program to canonical form, constructing abstract system tree (AST) for each procedure in the program, and traversing the program to construct a graph by making each non-control flow statement and each control structure into at least one node of the graph.