Compiler Metadata for Asynchronous Task Data Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing EDT platforms face inefficiencies in managing data blocks, leading to suboptimal performance in terms of execution speed, memory load, and energy consumption due to the lack of dynamic creation and customization of data blocks based on hardware and usage characteristics, and the need for manual programmer intervention.

Innovation Solution

A compiler that performs compile-time operations to identify and manage data blocks, creating, distributing, and deleting them dynamically based on hardware characteristics and task usage, thereby optimizing data access and reducing overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If data blocks are manually managed by programmers, then flexibility and control are improved, but device complexity and time consumption increase

Engineering Contradiction:
Improveprogrammer controlVSAvoiddata management complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The EDT platform automatically manages data blocks through runtime system operations including allocation, distribution, and deletion. The compiler generates metadata that enables the runtime system to autonomously create data blocks at appropriate times and distribute them to processing nodes without manual programmer intervention, thereby reducing operational complexity while maintaining control through automated mechanisms.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The compiler performs preliminary analysis during compilation to identify data variables and generate corresponding metadata describing data blocks. This advance preparation enables the runtime system to efficiently manage data blocks during execution without requiring programmers to manually specify data management operations, resolving the contradiction between automated management and programmer control.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If data blocks are created at startup, then availability is improved, but startup overhead and energy consumption increase

Engineering Contradiction:
Improvedata availabilityVSAvoidstartup overhead
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system dynamically determines when data blocks should be created based on runtime conditions and task requirements. Instead of static startup creation, the runtime system creates data blocks just-in-time when needed by tasks, adapting to actual execution needs. This dynamic approach ensures data availability when required while minimizing unnecessary startup overhead and energy consumption.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The compiler performs preliminary analysis to identify which data variables will be used and generates metadata that guides runtime data block creation. This advance preparation enables the runtime system to create data blocks efficiently at the appropriate moment rather than all at startup, reducing startup overhead while ensuring availability when needed.

Inventive Principle:
Principle #10Preliminary action

3Speed

If data blocks are distributed across all nodes, then access speed is improved, but memory load and energy consumption increase

Engineering Contradiction:
Improvedata access speedVSAvoidmemory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The system distributes data blocks selectively to specific processing nodes based on which nodes actually need the data for their tasks. Rather than uniform distribution to all nodes, the runtime system analyzes task requirements and allocates data blocks only to nodes that will use them, optimizing local data availability while reducing overall memory consumption across the system.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The data distribution strategy is dynamically determined based on task requirements and node capabilities. The runtime system adapts the distribution pattern to match actual data access needs, creating a dynamic allocation scheme that optimizes access speed for active tasks while minimizing memory load on nodes that do not require the data.

Inventive Principle:
Principle #15Dynamics

4Ease of operation

If synchronous execution is used, then coordination is simplified, but parallelism and energy efficiency decrease

Engineering Contradiction:
Improvecoordination simplicityVSAvoidparallelism
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The system segments the execution model into independent task units with explicit data dependencies. Rather than synchronized bulk execution, tasks are divided into discrete units that can execute asynchronously when their data dependencies are satisfied. This segmentation enables fine-grained parallelism while maintaining coordination through data dependency tracking rather than time-based synchronization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The runtime system acts as an intermediary that manages data block distribution and task scheduling without requiring explicit synchronization primitives. Data blocks serve as intermediaries that carry dependency information, allowing tasks to coordinate through data availability rather than through synchronous barriers, thereby enabling asynchronous execution with improved parallelism.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11579905B2Systems and methods for automatic data management for an asynchronous task-based runtime
Publication Date: 2023.02.14 QUALCOMM INC
  • US11579905B2 patent drawing
  • US11579905B2 patent drawing
  • US11579905B2 patent drawing

AI summary

A compilation system can define, at compile time, the data blocks to be managed by an Even Driven Task (EDT) based runtime/platform, and can also guide the runtime/platform on when to create and/or destroy the data blocks, so as to improve the performance of the runtime/platform. The compilation system can also guide, at compile time, how different tasks may access the data blocks they need in a manner that can improve performance of the tasks.