Lattice-Based Language Parallelization via Automatic DAG Construction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current parallel computing systems face challenges such as boilerplate code issues, race conditions, deadlocks, and limited optimization opportunities due to their implementation as libraries rather than languages, which hinder efficient parallelization and scalability.

Innovation Solution

A lattice-based programming language that automatically constructs a Directed Acyclic Graph (DAG) of parallel computing operations, ensuring static determinability of data dependencies and preventing race conditions, allowing for efficient parallelization with minimal programmer effort.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If parallel computing systems are implemented as libraries, then they can be integrated into existing imperative languages, but they generate boilerplate code, allow race conditions and deadlocks, and provide limited optimization opportunities

Engineering Contradiction:
Improveintegration with existing languagesVSAvoidboilerplate code and safety issues
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system automatically generates the DAG structure and parallelization strategy from the program's data dependencies without requiring manual intervention. The compiler performs static analysis to identify data dependencies and construct the execution plan, eliminating the need for programmers to write boilerplate code for parallelization while maintaining safety guarantees.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent replaces manual mechanical construction of parallel computing structures with automatic compiler-based analysis and generation. Instead of programmers manually creating DAGs and managing parallel execution, the compiler automatically performs static analysis of data dependencies and generates the appropriate parallel execution plan, substituting human effort with automated mechanical processing.

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

2Reliability

If DAG structure is manually constructed by programmers, then data dependencies can be controlled, but programmers may miss dependencies causing incorrect programs and the structure may not be optimized for execution

Engineering Contradiction:
Improvedata dependency controlVSAvoidprogrammer effort and optimization quality
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The compiler performs automatic static analysis to identify all data dependencies in the program, eliminating the need for programmers to manually specify them. The system self-services by analyzing the program code, constructing the DAG structure, and optimizing the execution plan without human intervention, thereby ensuring both correctness and optimization.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system uses static analysis feedback to automatically adjust and optimize the DAG construction. By analyzing data dependencies and flow through the program, the compiler receives feedback about the program's structure and uses this information to generate an optimized parallel execution plan that maximizes resource utilization while ensuring correctness.

Inventive Principle:
Principle #23Feedback

3Ease of operation

If parallel computing libraries operate at coarse DAG node resolution, then they can manage high-level operations, but they cannot break operations into sub-operations for better load balancing and resource utilization

Engineering Contradiction:
Improvehigh-level operation managementVSAvoidresource utilization and load balancing
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The system automatically segments operations into finer-grained sub-operations by analyzing data dependencies at the expression level. The compiler divides coarse operations into smaller executable units that can be more effectively distributed across processing resources, improving load balancing and resource utilization while maintaining ease of use through automatic generation.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system dynamically adjusts the granularity of DAG nodes based on optimization opportunities identified during static analysis. Rather than fixing the resolution at coarse or fine levels, the compiler dynamically determines the appropriate segmentation of operations to maximize resource utilization while maintaining manageability, adapting the structure to the specific program characteristics.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS10209963B2Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing
Publication Date: 2019.02.19 HUTCHISON LUKE
  • US10209963B2 patent drawing
  • US10209963B2 patent drawing
  • US10209963B2 patent drawing

AI summary

A system for providing a computer configured to read an immutable value for a variable; read the value of the variable at a specific timestamp, thereby providing an ability to create looping constructs; set a current or next value of a loop variable as a function of previous or current loop variables; read a set of all values that a variable will assume; push or scatter the values into collections; reduce the collections into a single value; display graphical node representations to indicate computed values next to corresponding source code lines in an editor, and edge representations to indicate dependencies between values; visualize data output by a given node; permit the user to reorder source code lines by dragging nodes; cache or memoize computed values, and reuse cached or memoized values to implement reactive programming, minimizing recomputation in response to changes to program or data.