Dynamic Parallelization via Serialization Identifiers

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

VSEngineering 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

Engineering Contradiction:
Improvesoftware performanceVSAvoidprogram generation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

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

Inventive Principle:
Principle #24Intermediary (Mediator)

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

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

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

Engineering Contradiction:
Improveparallel executionVSAvoiddata independence analysis accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

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

Inventive Principle:
Principle #15Dynamics

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

Inventive Principle:
Principle #23Feedback

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

Engineering Contradiction:
Improveparallel execution performanceVSAvoidexecution determinism
Core Design Contradiction:
ProductivityVSReliability

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

Inventive Principle:
Principle #1Segmentation

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

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8417919B2Assigning different serialization identifier to operations on different data set for execution in respective processor in multi-processor system
Publication Date: 2013.04.09 WISCONSIN ALUMNI RES FOUND
  • US8417919B2 patent drawing
  • US8417919B2 patent drawing
  • US8417919B2 patent drawing

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.