Parallel Program Synthesis via ML Execution Time Prediction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Program synthesis systems face inefficiencies due to the overhead of creating new threads for sub-goals, which can overwhelm computing resources, especially when the computational effort is small compared to thread creation overhead.

Innovation Solution

A machine learning model is trained to predict the execution times of sub-goals, allowing for efficient scheduling across processing cores and CPUs, reducing wall-clock time and conserving memory by optimizing the parallel execution of sub-goals.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a new thread of execution is spawned for each sub-goal, then parallel execution capability is improved, but computing resources are overwhelmed due to thread creation overhead

Engineering Contradiction:
Improveparallel execution capabilityVSAvoidthread creation overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs preliminary actions by predicting execution times of sub-goals before actual execution, and pre-scheduling them based on these predictions. This allows the system to prepare execution schedules in advance, reducing the need for dynamic thread creation and management during runtime, thereby decreasing overhead while maintaining parallel execution capability.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces a predictor as an intermediary component that estimates execution times of sub-goals. This mediator enables informed scheduling decisions without requiring immediate thread creation, allowing the system to batch and optimize thread creation operations, thus reducing overall thread creation overhead while preserving parallelism.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Loss of time

If sub-goals are executed in parallel across available cores, then synthesis time is reduced, but memory consumption increases

Engineering Contradiction:
Improvesynthesis timeVSAvoidmemory consumption
Core Design Contradiction:
Loss of timeVSQuantity of substance

Solution Approach 1:

The system dynamically adjusts the degree of parallelization by scheduling sub-goals based on predicted execution times and available resources. Rather than maintaining fixed parallel execution, the scheduler adaptively controls which sub-goals run concurrently, optimizing the balance between synthesis time and memory consumption based on current system state.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the parameter of parallel execution degree by using execution time predictions to control scheduling decisions. Sub-goals with shorter predicted execution times may be batched together, while longer-running sub-goals are spaced out, effectively adjusting the level of parallelism to manage memory consumption while still reducing overall synthesis time.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If more sub-goals are scheduled in parallel, then productivity increases, but processor load becomes excessive

Engineering Contradiction:
Improvesynthesis throughputVSAvoidprocessor load
Core Design Contradiction:
ProductivityVSPower

Solution Approach 1:

The system uses execution time predictions as feedback to make informed scheduling decisions. By estimating how long each sub-goal will take, the scheduler can distribute workload more evenly across processors, avoiding excessive concentration of tasks on certain cores. This feedback mechanism enables maintaining high throughput while preventing processor overload.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS11194800B2Parallel search in program synthesis
Publication Date: 2021.12.07 MICROSOFT TECHNOLOGY LICENSING LLC
  • US11194800B2 patent drawing
  • US11194800B2 patent drawing
  • US11194800B2 patent drawing

AI summary

Systems, methods, and computer-executable instructions for parallel searching in program synthesis. A task to synthesize in a domain specific language (DSL) is received. The task is synthesized. Synthesizing the task includes generating sub-goals based on the task. The synthesized task includes a subset of the sub-goals. An estimated completion time for each of the sub-goals is expressed using the DSL is determined. The sub-goals are scheduled based on the estimated completion time. Some of the sub-goals are scheduled to be executed in parallel. The sub-goals are solved based on the scheduling to synthesize the task in the DSL. An elapsed real time to complete the synthesizing the task is reduced compared to scheduling the sub-goals in an order based on sub-goal generation.