Automatic Parallelization of Sequential Code for Embedded Systems
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
3Productivity
If task-level pipelining is applied to streaming applications, then parallel execution is achieved, but manual splitting into pipeline stages is required
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.
Data Source
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.


