Deterministic Task Scheduling for Heterogeneous Compute Engines
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Scheduling tasks in complex System on a Chip (SoC) environments with heterogeneous hardware platforms is challenging due to dynamic state changes and varying performance across different compute engines, making it difficult to achieve determinism and comply with safety and performance requirements, especially in autonomous systems.
Innovation Solution
A task management system that generates deterministic execution schedules for heterogeneous computing systems, allowing different compute engines to manage task execution with limited oversight, using a synchronization primitive fencing framework to ensure consistent timing and sequencing, and includes monitoring and remedial operations to verify compliance with timing and sequence constraints.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If dynamic scheduling and preemption are used to manage tasks on heterogeneous hardware platforms, then task execution flexibility and performance optimization are improved, but system determinism and timing guarantees deteriorate
Solution Approach 1:
The system segments the scheduling function by separating task management into two independent parts: a static scheduler that generates deterministic execution schedules, and engine-specific schedulers that handle local task optimization. This segmentation allows the static scheduler to guarantee determinism while engine-specific schedulers provide flexibility, resolving the contradiction between system determinism and task execution flexibility.
Solution Approach 2:
The static scheduler performs preliminary action by generating execution schedules in advance before runtime execution. These pre-computed schedules define the execution order and timing of tasks across heterogeneous engines, ensuring determinism is established beforehand rather than dynamically during execution, thus maintaining timing guarantees while allowing flexible task distribution.
2Reliability
If CPU-centric real-time schedulers are used, then timing guarantees and determinism are improved, but adaptability to heterogeneous hardware platforms deteriorates
Solution Approach 1:
The static scheduler serves multiple functions across different hardware platforms by generating unified execution schedules that work on CPU, GPU, and other heterogeneous engines. Rather than creating separate schedulers for each platform, this universal scheduler adapts to different hardware through a common interface, providing timing guarantees while maintaining broad hardware adaptability.
Solution Approach 2:
The static scheduler acts as an intermediary between the centralized task manager and engine-specific schedulers. It receives high-level task descriptions and translates them into platform-specific execution schedules, mediating between the need for deterministic timing guarantees and the requirement for hardware-specific optimization without requiring CPU-centric assumptions.
3Ease of operation
If priority-based real-time scheduling policies are used, then task scheduling simplicity is improved, but determinism and worst-case behavior validation deteriorate
Solution Approach 1:
The system dynamically switches between static schedule generation mode (for determinism-critical paths) and dynamic execution mode (for flexible optimization). The static scheduler generates deterministic schedules for worst-case analysis, while the runtime system can dynamically adjust execution based on actual conditions, combining scheduling simplicity with rigorous determinism validation for safety-critical operations.
Data Source
AI summary
One or more embodiments of the present disclosure relate to switching between execution schedules related to execution of tasks, or runnables, by multiple compute engines. The execution schedules includes respective sets of commands that dictate timing and order of execution, by the compute engines, of tasks, or runnables, corresponding to computing applications.


