Compiler-Generated Invocation Stubs for Data Parallel Programming

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current data parallel programming requires sophisticated programmers familiar with specific hardware, leading to compatibility issues and a lack of general-purpose solutions that allow programmers to focus on high-level logic rather than hardware implementation details.

Innovation Solution

The development of techniques for generating invocation stubs that bridge logical data parallel computations to physical hardware, enabling data parallel programming in a declarative, reusable, and portable manner, using a compiler to map input data to unit data parallel computations and allocate resources.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If data parallel programming is implemented with hardware-specific implementations, then execution efficiency on target hardware is improved, but programmer complexity and hardware compatibility requirements worsen

Engineering Contradiction:
Improveexecution efficiencyVSAvoidprogrammer complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces a compiler as an intermediary between the programmer and hardware-specific data parallel implementations. The compiler translates high-level declarative code into hardware-specific parallel code, eliminating the need for programmers to directly understand hardware architecture while maintaining execution efficiency through optimized code generation

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent separates the programming task into two distinct layers: a high-level declarative layer for expressing computational logic and a hardware-specific implementation layer for execution. This segmentation allows programmers to work at the abstract level while the compiler handles the complex hardware-specific transformations

Inventive Principle:
Principle #1Segmentation

2Productivity

If data parallel programs are written for specific hardware architectures, then performance on that hardware is optimized, but portability to other hardware platforms deteriorates

Engineering Contradiction:
Improveperformance optimizationVSAvoidhardware portability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal high-level declarative programming interface that can target multiple different hardware architectures. The same source code can be compiled for different data parallel hardware platforms, providing portability while the compiler optimizes for each specific target architecture's characteristics

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

3Ease of operation

If traditional single-core CPUs are used, then programming simplicity is maintained, but data parallel processing capability is lost

Engineering Contradiction:
Improveprogramming simplicityVSAvoiddata parallel capability
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

The patent enables traditional single-core style programming to automatically utilize data parallel hardware capabilities through the compiler. The compiler analyzes the high-level code and automatically generates appropriate parallel implementations, allowing programmers to write simple sequential-style code that executes efficiently on parallel hardware

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS8589867B2Compiler-generated invocation stubs for data parallel programming model
Publication Date: 2013.11.19 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8589867B2 patent drawing
  • US8589867B2 patent drawing
  • US8589867B2 patent drawing

AI summary

Described herein are techniques for generating invocation stubs for a data parallel programming model so that a data parallel program written in a statically-compiled high-level programming language may be more declarative, reusable, and portable than traditional approaches. With some of the described techniques, invocation stubs are generated by a compiler and those stubs bridge a logical arrangement of data parallel computations to the actual physical arrangement of a target data parallel hardware for that data parallel computation.