Runtime Token Parallelization for Data Dependency Resolution

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveparallel execution capabilityVSAvoiddata dependency resolution
Core Design Contradiction:
ProductivityVSDifficulty of detecting and measuring

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.

Inventive Principle:
Principle #10Preliminary action

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If more processors are added to execute program components in parallel, then software performance improves, but data dependency errors increase

Engineering Contradiction:
Improvesoftware performanceVSAvoiddata dependency correctness
Core Design Contradiction:
ProductivityVSReliability

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.

Inventive Principle:
Principle #23Feedback

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Ease of operation

If sequential programming model is used, then programming simplicity is maintained, but parallel execution opportunities are obscured

Engineering Contradiction:
Improveprogramming simplicityVSAvoidparallel execution opportunity identification
Core Design Contradiction:
Ease of operationVSProductivity

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.

Inventive Principle:
Principle #25Self-service

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9652301B2System and method providing run-time parallelization of computer software using data associated tokens
Publication Date: 2017.05.16 WISCONSIN ALUMNI RES FOUND
  • US9652301B2 patent drawing
  • US9652301B2 patent drawing
  • US9652301B2 patent drawing

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.