Accelerator Task Scheduling via Data Flow Graphs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current systems for programming GPUs face challenges due to programming difficulty, lack of modularity, and unpredictable performance artifacts, as they require explicit control over data movement, leading to trade-offs between performance and modularity.

Innovation Solution

An application programming interface (API) that encapsulates executable code snippets into accelerator tasks, generates a graph for data flow and dependencies, and abstracts memory using datablocks to schedule task execution across multiple accelerators, minimizing data copying.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If explicit control of data movement is implemented, then performance can be optimized, but programming complexity and difficulty increase

Engineering Contradiction:
ImproveperformanceVSAvoidprogramming complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces a compiler as an intermediary between the programmer and the GPU hardware. The compiler automatically generates data movement code based on algorithm code and execution schedules, eliminating the need for programmers to manually control data movement while still achieving optimized performance through automated code generation and scheduling

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If data movement code is coupled with algorithm code, then performance optimization is possible, but modularity and reusability are sacrificed

Engineering Contradiction:
Improveperformance optimizationVSAvoidmodularity
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent segments the programming model into distinct components: algorithm code that describes computation logic, and data movement code that handles data transfer. The compiler separates these concerns by automatically generating data movement operations based on the algorithm code and execution schedule, allowing algorithm code to remain modular and reusable while performance is optimized through automated code generation

Inventive Principle:
Principle #1Segmentation

3Productivity

If manual data movement control is required, then performance can be tuned, but the programming environment becomes less user-friendly

Engineering Contradiction:
Improveperformance tuningVSAvoidease of programming
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent implements a self-service programming model where the compiler automatically performs data movement optimization and code generation based on the provided algorithm code. The system serves itself by analyzing the computational graph, determining optimal execution schedules, and generating appropriate data movement operations without requiring manual intervention from the programmer

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9996394B2Scheduling accelerator tasks on accelerators using graphs
Publication Date: 2018.06.12 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9996394B2 patent drawing
  • US9996394B2 patent drawing
  • US9996394B2 patent drawing

AI summary

An application programming interface is provided that allows programmers to encapsulate snippets of executable code of a program into accelerator tasks. A graph is generated with a node corresponding to each of the accelerator tasks with edges that represent the data flow and data dependencies between the accelerator tasks. The generated graph is used by a scheduler to schedule the execution of the accelerator tasks across multiple accelerators. The application programming interface further provides an abstraction of the various memories of the accelerators called a datablock. The programmer can store and use data stored on the datablocks without knowing where on the accelerators the data is stored. The application programming interface can further schedule the execution of accelerator tasks to minimize the amount of data that is copied to and from the accelerators based on the datablocks and the generated graph.