Command Scheduler for HAPU Virtualization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional methods for scheduling tasks on heterogeneous acceleration processing units (HAPUs) face challenges such as false dependency and head blocking, which slow down the scheduling process and hinder efficient resource utilization in virtualization environments.

Innovation Solution

The implementation of a scheduler that differentiates between synchronization and conditional commands, enabling waiting queues for synchronization commands and dispatching them to processing engines, while managing dependencies through virtual queue IDs to prevent false dependencies and head blocking.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional scheduling methods are used for HAPUs, then task scheduling is simple, but false dependency and head blocking occur which slow down the scheduling process

Engineering Contradiction:
Improvescheduling speedVSAvoidtime lost due to false dependency and head blocking
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The command queue is segmented into multiple sub-queues (first sub-queue and second sub-queue) based on command types. Synchronization commands are separated from non-synchronization commands, allowing independent processing of each sub-queue. This segmentation eliminates false dependencies between different command types and prevents head blocking, as the processing engine can switch between sub-queues when certain commands are pending.

Inventive Principle:
Principle #1Segmentation

2Productivity

If tasks are scheduled in strict order, then dependency management is simple, but resource utilization is reduced due to head blocking

Engineering Contradiction:
Improveresource utilizationVSAvoidscheduling mechanism complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The scheduling mechanism dynamically selects which sub-queue to process based on the current state of commands. When the first sub-queue has pending synchronization commands, the system processes from the second sub-queue, and vice versa. This dynamic switching optimizes resource utilization by preventing head blocking while maintaining proper dependency management through the virtual queue ID association.

Inventive Principle:
Principle #15Dynamics

3Productivity

If multiple users share HAPUs, then resource efficiency is improved, but false dependencies between user commands increase

Engineering Contradiction:
Improveresource efficiencyVSAvoidcommand execution correctness
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

A virtual queue ID is introduced as an intermediary parameter that associates commands with their originating user or task context. The processing engine uses this virtual queue ID to maintain proper execution order and dependency relationships across multiple users' commands. This intermediary mechanism allows efficient multi-user sharing while preventing false dependencies by ensuring commands are processed in the correct logical sequence within each virtual queue.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11366690B2Scheduling commands in a virtual computing environment
Publication Date: 2022.06.21 ALIBABA GROUP HOLDING LTD
  • US11366690B2 patent drawing
  • US11366690B2 patent drawing
  • US11366690B2 patent drawing

AI summary

A method and an apparatus for scheduling commands in a virtual computing environment includes picking a command. It is determined whether the command is a synchronization command or a conditional command. A synchronization command is an independent command. A conditional command is a dependent command that depends on a synchronization command. In response to the command being determined as the synchronization command, a waiting queue is enabled for the command, the waiting queue storing conditional commands dependent on a running synchronization command. The command is dispatched to a processing engine.