Automated Parallel Iterative Code Generation in Data Flow Programs
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current graphical programming systems require manual effort and are error-prone when attempting to parallelize iterative code for multi-core processing, as they lack automated mechanisms to analyze and transform loop structures for concurrent execution.
Innovation Solution
A system and method for automatically parallelizing iterative graphical program code by analyzing dependence and reduction operations, generating parallelized code portions that can execute concurrently without user intervention, and deploying them to multi-core or multi-processor platforms.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If manual analysis and transformation of loop structures is performed to enable parallel execution, then parallel execution capability is achieved, but development time and complexity increase significantly
Solution Approach 1:
The system performs preliminary analysis of loop structures, dependence relationships, and parallelization opportunities during the compilation or code generation phase. By pre-computing dependence graphs and identifying parallelizable iterations before execution, the system prepares the necessary transformation information in advance, eliminating the need for manual analysis during development.
Solution Approach 2:
The graphical programming environment automatically analyzes loop structures and generates parallelized code without requiring user intervention. The system services itself by performing dependence analysis, identifying parallelization opportunities, and transforming code automatically, freeing the user from manual parallelization efforts.
2Productivity
If manual customization of graphical program code is performed to achieve parallelism, then execution performance improves, but error rate increases due to tedious manual work
Solution Approach 1:
The system replaces the mechanical process of manual code analysis and transformation with an automated computational system. The compiler or code generator automatically performs dependence analysis, identifies parallelization opportunities, and generates transformed code, eliminating human error while maintaining the performance benefits of parallel execution.
Solution Approach 2:
The system incorporates feedback mechanisms that automatically verify the correctness of generated parallel code by checking dependence relationships and ensuring semantic equivalence between original and transformed code. This feedback loop ensures that parallelization transformations maintain code correctness while improving performance.
3Ease of manufacture
If iterative code is executed sequentially in graphical programs, then implementation simplicity is maintained, but resource utilization efficiency decreases on multi-core systems
Solution Approach 1:
The system automatically segments iterative loops into independent parallel tasks by analyzing dependence relationships. It divides the iteration space into separate segments that can be executed concurrently on different cores, transforming a single sequential loop into multiple parallel tasks without requiring the user to manually split the code.
Solution Approach 2:
The system dynamically determines the level of parallelization based on the specific loop structure, dependence relationships, and target hardware capabilities. It adaptively transforms loops into parallel forms when appropriate, maintaining simplicity for sequential code while automatically enabling parallelism when it benefits performance.
4Loss of time
If automatic parallelization is implemented, then development time is reduced, but system complexity increases
Solution Approach 1:
The system implements a universal automatic parallelization framework that handles multiple types of loops, dependence patterns, and target architectures through a single integrated mechanism. This multi-functional approach consolidates what would otherwise require multiple separate tools or manual processes into one system, reducing development time without proportionally increasing complexity.
Data Source
AI summary
System and method for automatically parallelizing iterative functionality in a data flow program. A data flow program is stored that includes a first data flow program portion, where the first data flow program portion is iterative. Program code implementing a plurality of second data flow program portions is automatically generated based on the first data flow program portion, where each of the second data flow program portions is configured to execute a respective one or more iterations. The plurality of second data flow program portions are configured to execute at least a portion of iterations concurrently during execution of the data flow program. Execution of the plurality of second data flow program portions is functionally equivalent to sequential execution of the iterations of the first data flow program portion.


