Dynamic Parallelism Policy for Recursive Functions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Naive parallel implementations of recursive functions in software lead to significant performance overhead and resource depletion due to static transition from parallel to sequential processing, failing to integrate with other parallel constructs and making dynamic decisions based on runtime conditions.

Innovation Solution

A control parallelism interface and parallelism policy procedures allow for dynamic decisions on parallelism during program execution, enabling transitions between parallel and sequential processing based on runtime values such as active tasks, recursion depth, and available resources, and applying consistent policies across recursive calls and other parallel constructs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If naive parallel implementation of recursive functions is used, then parallel processing capability is achieved, but performance overhead and resource depletion occur due to static transition from parallel to sequential processing

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidperformance overhead
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent implements dynamic parallelism by allowing the parallelism policy to be adjusted at runtime based on current system conditions. The parallelism depth and other parameters can change dynamically during execution, enabling the system to adapt to varying workloads and resource availability, thus avoiding the static transition overhead between parallel and sequential modes.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the parameter of parallelism depth dynamically during recursion. By adjusting the parallelism depth parameter based on runtime conditions (such as current recursion depth, available resources, and workload characteristics), the system optimizes performance without incurring the overhead of static transitions.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If naive parallel implementation of recursive functions is used, then parallel processing is enabled, but resource depletion occurs due to static transition from parallel to sequential processing

Engineering Contradiction:
Improveparallel processing capabilityVSAvoidresource depletion
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The system dynamically adjusts the level of parallelism based on current resource availability and system state. This prevents resource depletion by scaling parallelism down when resources are constrained and scaling it up when resources are abundant, maintaining optimal resource utilization throughout execution.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent incorporates feedback mechanisms that monitor system state (resource usage, workload characteristics) and use this information to adjust parallelism decisions. This feedback loop prevents resource depletion by adapting parallelism levels to actual system conditions rather than following a fixed static transition pattern.

Inventive Principle:
Principle #23Feedback

3Ease of manufacture

If static transition from parallel to sequential processing is used, then implementation simplicity is maintained, but inability to make dynamic decisions based on runtime conditions occurs

Engineering Contradiction:
Improveimplementation simplicityVSAvoiddynamic decision-making capability
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal parallelism policy interface that can accommodate both simple static policies and complex dynamic policies. The same recursive framework supports multiple parallelism strategies, allowing users to choose the appropriate level of complexity for their specific needs while maintaining a unified implementation approach.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Speed

If parallelism depth is increased in recursive calls, then processing speed may improve, but performance overhead and resource depletion worsen

Engineering Contradiction:
Improveprocessing speedVSAvoidperformance overhead
Core Design Contradiction:
SpeedVSLoss of energy

Solution Approach 1:

The patent implements dynamic adjustment of parallelism depth during recursion. Instead of using a fixed parallelism depth throughout execution, the system adapts the parallelism depth based on current recursion depth, available resources, and workload characteristics, optimizing the balance between processing speed and overhead.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the parallelism depth parameter dynamically during recursive execution. By adjusting this parameter based on runtime conditions, the system achieves optimal processing speed while minimizing performance overhead, avoiding the pitfalls of both fixed shallow and fixed deep parallelism.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8719803B2Controlling parallelization of recursion using pluggable policies
Publication Date: 2014.05.06 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8719803B2 patent drawing
  • US8719803B2 patent drawing
  • US8719803B2 patent drawing

AI summary

A parallelism policy object provides a control parallelism interface whose implementation evaluates parallelism conditions that are left unspecified in the interface. User-defined and other parallelism policy procedures can make recommendations to a worker program for transitioning between sequential program execution and parallel execution. Parallelizing assistance values obtained at runtime can be used in the parallelism conditions on which the recommendations are based. A consistent parallelization policy can be employed across a range of parallel constructs, and inside recursive procedures.