Runtime Token Parallelization for Data Dependency Resolution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current software performance improvements through parallelization are hindered by the difficulty in identifying independent program components for execution on multi-core processors, particularly due to complex data dependencies, which are not easily resolved by static analysis and can lead to errors during parallel execution.
Innovation Solution
The use of tokens (write and read tokens) to manage data dependencies, ensuring that computational operations can only execute when necessary tokens are available, and employing a wait list to maintain proper execution order, allowing processors to dynamically allocate tasks and avoid data dependency issues.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If static analysis is used to identify independent program components for parallel execution, then program structure is preserved, but data dependencies cannot be resolved and parallelization opportunities are missed
Solution Approach 1:
The patent applies preliminary action by assigning unique tokens to data elements before execution begins. These tokens are attached to data structures during program preparation, enabling runtime systems to automatically detect and resolve data dependencies without complex static analysis. The tokens are pre-configured to track read/write operations, allowing parallel execution decisions to be made based on simple token availability checks rather than difficult dependency analysis.
Solution Approach 2:
The patent introduces tokens as intermediary objects that mediate between computational operations and data elements. These tokens serve as intermediaries that carry dependency information, allowing the runtime system to manage data dependencies through token transfer and validation rather than direct analysis of program instructions. This intermediary mechanism simplifies the detection and resolution of data dependencies while enabling effective parallelization.
2Productivity
If more processors are added to execute program components in parallel, then software performance improves, but data dependency errors increase
Solution Approach 1:
The patent implements feedback mechanisms where computational operations must acquire tokens from data elements before executing and return tokens after completion. This feedback loop ensures that read operations only proceed when no write operations are pending, and write operations wait for conflicting reads to complete. The token acquisition and release process provides continuous feedback about data dependency status, preventing errors even as more processors are added to the system.
Solution Approach 2:
Tokens act as intermediaries that mediate access between multiple processors and shared data elements. Each processor must obtain appropriate tokens (read or write) before accessing data, and the token system enforces correct access ordering. This intermediary mechanism allows multiple processors to safely operate on the same data without causing dependency errors, maintaining reliability while enabling parallel execution.
3Ease of operation
If sequential programming model is used, then programming simplicity is maintained, but parallel execution opportunities are obscured
Solution Approach 1:
The patent enables self-service by automatically attaching tokens to data elements and managing their lifecycle without requiring programmer intervention. The runtime system automatically handles token assignment, transfer, and release based on program execution, extracting parallel execution opportunities from sequentially written code. This allows programmers to maintain simple sequential programming while the system automatically identifies and exploits parallelism through token-based dependency tracking.
Solution Approach 2:
Tokens serve as intermediaries that bridge sequential programming and parallel execution. By attaching tokens to data elements in sequentially written code, the system enables automatic detection of parallel execution opportunities without changing the programming model. The tokens mediate between the sequential code structure and the parallel runtime system, allowing both programming simplicity and parallel productivity to coexist.
Data Source
AI summary
A system and method of parallelizing programs assigns write tokens and read tokens to data objects accessed by computational operations. During run time, the write sets and read sets for computational operations are resolved and the computational operations executed only after they have obtained the necessary tokens for data objects corresponding to the resolved write and read sets. A data object may have unlimited read tokens but only a single write token and the write token may be released only if no read tokens are outstanding. Data objects provide a wait list which serves as an ordered queue for computational operations waiting for tokens.


