Loop Parallelization via Chunked Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing multi-processor computer systems face challenges in efficiently parallelizing applications with data dependencies between loops, leading to suboptimal execution times due to serial execution of dependent loop iterations.

Innovation Solution

A method and system for compiling application source code that partitions loops into chunks, calculates data dependencies, and inserts synchronization instructions to enable concurrent execution of loops with dependencies, allowing for parallel processing across multiple processors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If loops with data dependencies are executed serially, then data dependency correctness is maintained, but execution time increases and processor utilization decreases

Engineering Contradiction:
Improvedata dependency correctnessVSAvoidexecution efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent divides loops into chunks of iterations, allowing independent execution of different chunks while maintaining correctness through synchronization. This segmentation enables parallel processing without violating data dependencies, as each chunk can be executed independently once synchronization barriers are properly placed.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary analysis during compilation to identify data dependencies between loop iterations and insert synchronization barriers in advance. This preliminary action ensures that threads wait for necessary computations to complete before accessing shared data, preventing race conditions while enabling parallel execution.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If loops are partitioned into chunks for parallel execution, then execution efficiency improves, but synchronization complexity increases

Engineering Contradiction:
Improveexecution efficiencyVSAvoidsynchronization complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces synchronization barriers as intermediary elements between loop chunks. These barriers act as mediators that coordinate access to shared data between threads, ensuring that data is properly synchronized without requiring complex synchronization protocols. The barriers simplify the synchronization process by providing clear entry and exit points for thread coordination.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If synchronization barriers are inserted between loop iterations, then data dependency correctness is ensured, but execution time for synchronization operations increases

Engineering Contradiction:
Improvedata dependency correctnessVSAvoidsynchronization time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies synchronization barriers selectively at specific locations where data dependencies exist, rather than uniformly across all loop iterations. This localized approach ensures that synchronization is only performed where necessary, minimizing the impact on execution time while maintaining correctness. The compiler analyzes dependencies and inserts barriers only at critical points.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent optimizes synchronization by changing parameters such as the granularity of chunk division and the placement of synchronization barriers. By adjusting these parameters, the system finds an optimal balance between ensuring data dependency correctness and minimizing synchronization overhead, allowing for efficient parallel execution.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8479185B2Method and system for utilizing parallelism across loops
Publication Date: 2013.07.02 ORACLE INT CORP
  • US8479185B2 patent drawing
  • US8479185B2 patent drawing
  • US8479185B2 patent drawing

AI summary

A method for compiling application source code that includes selecting multiple loops for parallelization. The multiple loops include a first loop and a second loop. The method further includes partitioning the first loop into a first set of chunks, partitioning the second loop into a second set of chunks, and calculating data dependencies between the first set of chunks and the second set of chunks. A first chunk of the second set of chunks is dependent on a first chunk of the first set of chunks. The method further includes inserting, into the first loop and prior to completing compilation, a precedent synchronization instruction for execution when execution of the first chunk of the first set of chunks completes, and completing the compilation of the application source code to create an application compiled code.