Self-Optimizing Computation Graph Execution Policy

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers face challenges in determining whether code segments can be executed in parallel at runtime due to varying computing environments, such as processor numbers, memory, and workload, which are not effectively addressed by current manual coding practices.

Innovation Solution

A service provider system processes code structured as a computation graph using an iterative learning process to determine which code segments to execute in parallel, adjusting an execution policy based on the computing environment's state and exploration rate, optimizing execution time.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If developers manually write code to statically adhere to parallel execution rules, then code portability and simplicity are maintained, but execution time optimization is limited due to inability to adapt to varying computing environments

Engineering Contradiction:
Improveexecution timeVSAvoidcode complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The computation graph executes autonomously by evaluating its own execution policy based on runtime environment detection, without requiring developer intervention or complex manual parallelization code. The system self-optimizes by automatically determining parallel execution opportunities based on detected processor counts, memory availability, and workload characteristics.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The execution policy dynamically adjusts execution parameters (parallel vs. serial execution) based on detected computing environment parameters such as processor count, memory size, and workload type. The system changes execution behavior by modifying the exploration rate parameter in response to environment changes, optimizing performance without requiring code restructuring.

Inventive Principle:
Principle #35Parameter changes

2Productivity

If code is optimized for specific computing environments, then execution time is minimized for that environment, but adaptability to different computing environments deteriorates

Engineering Contradiction:
Improveexecution efficiencyVSAvoidenvironment adaptability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The execution policy is dynamic rather than static, automatically adapting to different computing environments by detecting runtime parameters such as processor count, memory availability, and workload characteristics. The system adjusts the exploration rate and parallel execution strategy based on detected environment state, maintaining high efficiency across diverse hardware configurations without requiring separate optimized versions of the code.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The computation graph execution system serves multiple functions: it detects computing environment parameters, evaluates execution policies, determines parallel execution opportunities, and adapts behavior based on exploration rate adjustments. This universal approach allows the same code to efficiently execute across various computing environments (single-core to multi-core, different memory configurations, varying workload types) without requiring environment-specific optimizations.

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

3Loss of time

If iterative learning processes are used to optimize execution policy, then execution time is minimized through dynamic adaptation, but computational overhead increases due to continuous environment monitoring and policy adjustment

Engineering Contradiction:
Improveexecution timeVSAvoidcomputational overhead
Core Design Contradiction:
Loss of timeVSUse of energy by moving object

Solution Approach 1:

The system performs preliminary environment detection at the start of computation graph execution, gathering information about processor count, memory size, and workload characteristics before optimization iterations begin. This preliminary action reduces the need for continuous heavy monitoring during execution, as the baseline environment state is already known, allowing the iterative learning process to focus on policy adjustment rather than repeated environment scanning.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements feedback mechanisms where the execution policy is adjusted based on performance measurements from previous iterations. The exploration rate is modified according to feedback about execution time and environment state changes, allowing the system to converge toward optimal performance without requiring exhaustive search in every iteration. This feedback-driven approach reduces computational overhead by learning from past performance rather than repeatedly evaluating all possible execution strategies.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS11709701B2Iterative learning processes for executing code of self-optimizing computation graphs based on execution policies
Publication Date: 2023.07.25 PAYPAL INC
  • US11709701B2 patent drawing
  • US11709701B2 patent drawing
  • US11709701B2 patent drawing

AI summary

A method includes receiving code of an application, the code structured as a plurality of instructions in a computation graph that corresponds to operational logic of the application. The method also includes processing the code according to an iterative learning process. The iterative learning process includes determining whether to adjust an exploration rate associated with the iterative learning process based on a state of a computing environment. Additionally, the process includes executing the plurality of instructions of the computation graph according to an execution policy that indicates certain instructions to be executed in parallel. The process also includes determining an execution time for executing the plurality of instructions of the computation graph according to the execution policy and based on the execution time and the exploration rate, adjusting the execution policy to reduce the execution time in a subsequent iteration.