Automatic Parallelization of Sequential Code for Embedded Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for parallelizing sequential code for embedded systems are manual, time-consuming, and error-prone, particularly in heterogeneous platforms, and current tools have limitations such as restricted code types, lack of interprocedural analysis, and inadequate handling of complex data-dependent control flows.

Innovation Solution

A computerized method that automatically transforms sequential code into functionally equivalent pipelined code by receiving user-defined task boundaries, performing interprocedural data flow analysis, and inserting communication channels, allowing for arbitrary sequential code transformation into task-level or coarse grain parallel code suitable for heterogeneous multiprocessor platforms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If manual parallelization is performed by experienced designers, then code optimization for performance and power is achieved, but the process is time-consuming and error-prone

Engineering Contradiction:
Improvecode correctnessVSAvoiddesign time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The parallelizing compiler automatically performs code analysis, transformation, and optimization without requiring manual designer intervention. The system analyzes sequential code, identifies parallelization opportunities, transforms the code into parallel form, and optimizes for target platform characteristics automatically, making the tool self-sufficient in resolving the contradiction between reliability and time consumption.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The invention replaces the manual mechanical process of designer intervention with an automated compiler-based system. The compiler uses algorithms for code analysis, data flow analysis, and automatic transformation to substitute human designers in the parallelization process, thereby eliminating time consumption and errors associated with manual work while maintaining optimization quality.

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

2Adaptability or versatility

If existing parallelizing compilers are used, then data parallelism is exploited on symmetric multiprocessors, but they cannot handle complex data-dependent control flow or specialized processor platforms

Engineering Contradiction:
Improveplatform compatibilityVSAvoidhandling complex control flow
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The compiler implements dynamic analysis capabilities that adapt to different code structures and platform characteristics. The system performs runtime analysis of data-dependent control flow and dynamically generates appropriate parallelization strategies, allowing it to handle complex control flows and specialize for different processor platforms rather than using fixed transformation rules.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The invention changes the approach parameters by moving from static transformation rules to dynamic, context-aware analysis. The compiler adjusts its parallelization strategy based on analyzed characteristics of the input code and target platform, changing parameters such as parallelization granularity, synchronization points, and data distribution methods to suit complex control flows and specialized architectures.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If task-level pipelining is applied to streaming applications, then parallel execution is achieved, but manual splitting into pipeline stages is required

Engineering Contradiction:
Improveparallel execution efficiencyVSAvoidcode transformation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The parallelizing compiler automatically performs the complex task of identifying pipeline stages, determining parallelization boundaries, and generating the necessary synchronization code. The system serves itself by analyzing the streaming application structure, automatically splitting it into pipeline stages, and generating parallel code without requiring manual intervention, thereby achieving high productivity while managing transformation complexity internally.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS7797691B2System and method for automatic parallelization of sequential code
Publication Date: 2010.09.14 INTERUNIVERSITAIR MICRO ELECTRONICS CENT (IMEC VZW)
  • US7797691B2 patent drawing
  • US7797691B2 patent drawing
  • US7797691B2 patent drawing

AI summary

Systems and methods are described for automatically transforming essentially sequential code into a plurality of codes which are to be executed in parallel to achieve the same or equivalent result to the sequential code. User-defined task boundaries are determined in the input code to thereby define a plurality of tasks. It is then determined if the essentially sequential application code can be separated at at least one of said user-defined tasks boundaries and if so at least one code of the plurality of codes for at least one of said tasks is automatically generated.