Compiler Parallelism Extraction via Dependency Graphs

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveparallel execution capabilityVSAvoididentification accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

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.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Ease of manufacture

If existing compilation processes are used, then source code is converted to executable, but parallelism is not optimally identified or exploited

Engineering Contradiction:
Improvecompilation processVSAvoidutilization of processing power
Core Design Contradiction:
Ease of manufactureVSProductivity

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.

Inventive Principle:
Principle #10Preliminary action

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

Engineering Contradiction:
Improveparallelism exploitationVSAvoidcompilation process complexity
Core Design Contradiction:
ProductivityVSDevice complexity

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.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentEP2872989B1Method and system for automated improvement of parallelism in program compilation
Publication Date: 2023.06.14 CRAYMER LORING
  • EP2872989B1 patent drawingFigure 1
  • EP2872989B1 patent drawingFigure 2
  • EP2872989B1 patent drawingFigure 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.