Auto-Parallelizing Compiler for Event-Driven Tuple-Space Programs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing parallel programming techniques struggle to systematically analyze and optimize event-driven tasks (EDTs) for efficient execution on multi-core architectures, leading to suboptimal performance and power consumption due to inadequate parallelization and dependency management.

Innovation Solution

An auto-parallelizing compiler technology that generates event-driven, tuple-space-based programs by employing a hierarchical mapping strategy and a retargetable runtime API, allowing for systematic analysis and transformation of sequential programs into EDT instances, enabling fine-grained parallelism and adaptive runtime management.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional parallel programming techniques are used, then programming simplicity is maintained, but parallelization efficiency and performance optimization are insufficient

Engineering Contradiction:
Improveparallelization efficiencyVSAvoiddependency management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the program into independent tuple-space based tasks with explicit dependency declarations. Each task is divided into producer and consumer operations that communicate through shared memory regions, enabling fine-grained parallelization while maintaining clear dependency boundaries through the dependency declaration mechanism.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a dependency declaration mechanism as an intermediary between tasks. This mechanism explicitly defines producer-consumer relationships and allows the runtime system to automatically manage scheduling and synchronization, eliminating the need for complex manual synchronization code while ensuring correct execution order.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Speed

If fine-grained parallelism is introduced to hide latency, then performance is improved, but task management overhead increases

Engineering Contradiction:
Improveexecution speedVSAvoidtask management overhead
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent enables tasks to be self-managing through explicit dependency declarations. Each task automatically identifies its dependencies and the runtime system autonomously schedules execution based on these declarations. This self-service approach eliminates the need for complex external task management mechanisms while maintaining fine-grained parallelism for latency hiding.

Inventive Principle:
Principle #25Self-service

3Manufacturing precision

If systematic analysis of loop-carried dependencies is performed, then parallelization accuracy is improved, but compile time increases

Engineering Contradiction:
Improveparallelization accuracyVSAvoidcompile time
Core Design Contradiction:
Manufacturing precisionVSLoss of time

Solution Approach 1:

The patent performs dependency analysis at compile time by systematically examining loop-carried dependencies and generating explicit dependency declarations beforehand. This preliminary action allows the runtime system to optimize scheduling without requiring complex runtime analysis, achieving high parallelization accuracy while keeping compile time manageable through automated dependency detection.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10564949B2System and method for generation of event driven, tuple-space based programs
Publication Date: 2020.02.18 QUALCOMM INC
  • US10564949B2 patent drawing
  • US10564949B2 patent drawing
  • US10564949B2 patent drawing

AI summary

In a system for automatic generation of event-driven, tuple-space based programs from a sequential specification, a hierarchical mapping solution can target different runtimes relying on event-driven tasks (EDTs). The solution uses loop types to encode short, transitive relations among EDTs that can be evaluated efficiently at runtime. Specifically, permutable loops translate immediately into conservative point-to-point synchronizations of distance one. A runtime-agnostic which can be used to target the transformed code to different runtimes.