Task Queue Scheduling for Heterogeneous ML Compute Circuits

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current approaches for scheduling tasks on heterogeneous compute circuits in deep learning applications are inefficient, particularly in scaling and maintaining complex neural network graphs, leading to performance bottlenecks and errors due to the complexity of defining and deploying application graphs.

Innovation Solution

A method and system that instantiate kernel objects based on input definitions, generate task graphs with nodes and edges representing tasks and data dependencies, and utilize task queues to assign and manage tasks across multiple compute circuits, enabling efficient scheduling and processing of tasks on heterogeneous compute circuits.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If tasks are scheduled on heterogeneous compute circuits using traditional methods, then processing can be performed, but processing throughput is limited due to inefficiency in scheduling and scaling

Engineering Contradiction:
Improveprocessing throughputVSAvoidcomplexity of defining and deploying application graphs
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces a task queue as an intermediary data structure between the application graph and heterogeneous compute circuits. The task queue abstracts the complexity of scheduling by providing a standardized interface for enqueueing tasks and retrieving them for execution on appropriate compute circuits, thereby improving throughput without requiring direct management of complex scheduling logic in the application graph

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the application graph into discrete tasks that can be independently enqueued and executed on different heterogeneous compute circuits. By breaking down the neural network processing into separable tasks with defined data dependencies, the system can scale across multiple compute circuits while maintaining manageable complexity through the task queue abstraction

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If the system scales to handle complex neural network graphs, then more tasks can be processed, but performance bottlenecks and errors increase due to scheduling inefficiency

Engineering Contradiction:
Improvenumber of tasks processedVSAvoidperformance bottlenecks and errors
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The task queue serves as a mediator that manages the flow of tasks between the application graph and compute circuits, preventing performance bottlenecks by decoupling task generation from task execution. This abstraction layer ensures reliable scheduling by handling task assignment to appropriate compute circuits without requiring the application graph to directly manage scheduling complexity

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system implements feedback mechanisms through the task queue management, where completed tasks are retrieved and their results fed back into the system for further processing or output. This feedback loop enables the system to handle complex neural network graphs reliably by maintaining proper data flow and dependency management across multiple compute circuits

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS11561826B1Scheduling processing of machine learning tasks on heterogeneous compute circuits
Publication Date: 2023.01.24 XILINX INC
  • US11561826B1 patent drawing
  • US11561826B1 patent drawing
  • US11561826B1 patent drawing

AI summary

Scheduling work of a machine learning application includes instantiating kernel objects by a computer processor in response to input of kernel definitions. Each kernel object is of a kernel type indicating a compute circuit. The computer processor generates a graph in a memory. Each node represents a task and specifies an assignment of the task to one or more of the kernel objects, and each edge represents a data dependency. Task queues are created in the memory and assigned to queue tasks represented by the nodes. Kernel objects are assigned to the task queues, and the tasks are enqueued by threads executing the kernel objects, based on assignments of the kernel objects to the task queues and assignments of the tasks to the kernel objects. Tasks are dequeued by the threads, and the compute circuits are activated to initiate processing of the dequeued tasks.