Dynamic Parallelization via Serialization Identifiers
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Generating and executing parallel programs is difficult due to the challenge of identifying independent computational operations and synchronizing access to shared data, leading to potential data races and increased complexity compared to sequential programming.
Innovation Solution
A system and method that identifies potential independence among computational operations and uses computation proxies to ensure sequential program semantics by assigning operations to serialization sets, where each data item is operated on by at most one processor, reducing the likelihood of data races through deterministic parallel execution.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If parallel execution is implemented to improve software performance on multi-processor systems, then productivity increases, but device complexity and difficulty of program generation increase significantly
Solution Approach 1:
The patent introduces a runtime system as an intermediary between the sequential program and the multi-processor execution environment. This runtime system automatically performs parallelization by identifying independent computational operations and distributing them across processors, eliminating the need for programmers to manually create complex parallel code while still achieving performance benefits from multi-processor execution
Solution Approach 2:
The patent replaces the manual mechanical process of parallel program creation with an automated system. Instead of requiring programmers to explicitly divide programs into parallel components and manage synchronization, the system uses a runtime compiler/interpreter to automatically analyze and parallelize sequential code, substituting automated analysis and transformation for manual parallelization efforts
2Productivity
If static parallelization is used to divide programs into independent portions, then parallel execution is achieved, but measurement precision of data independence is insufficient for general programs
Solution Approach 1:
The patent transitions from static parallelization (determined at compile time) to dynamic parallelization (determined at runtime). The system uses a runtime compiler/interpreter that can observe actual program execution and dynamically identify independent computational operations based on real data values and control flow, providing more accurate independence detection for general programs with irregular or dynamic data structures
Solution Approach 2:
The patent implements feedback mechanisms where the runtime system monitors program execution, tracks data accesses and dependencies, and uses this information to make informed decisions about parallelization. The system continuously gathers feedback about actual program behavior and adjusts its parallelization strategy accordingly, improving the precision of independence analysis beyond what static analysis can achieve
3Productivity
If explicit multi-threading is implemented to achieve parallel execution, then productivity improves, but reliability decreases due to data races and non-deterministic execution
Solution Approach 1:
The patent segments computational operations into distinct units and assigns serialization identifiers to track dependencies. By dividing the program into independent computational segments that can be executed in parallel while maintaining serialization boundaries, the system achieves parallel performance without the data race problems of traditional multi-threading, as each segment's execution order is preserved through serialization identification
Solution Approach 2:
The patent changes the execution model from traditional multi-threading with shared state to a parameter-based serialization system. By introducing serialization identifiers as a new parameter to track operational dependencies, the system maintains deterministic execution semantics while enabling parallel performance, avoiding the non-deterministic behavior inherent in traditional thread-based parallelization
Data Source
AI summary
A method of dynamic parallelization in a multi-processor identifies potentially independent computational operations, such as functions and methods, with a serializer that assigns a computational operation to a serialization set and a processor based on assessment of the data that the computational operation will be accessing upon execution.


