Application Scheduling
Definition
Application scheduling refers to the process of assigning the operations of an application — represented either as a graph of tasks or as a graph of computational patterns — to the available computational resources of a target architecture while respecting dependencies and constraints. In compilation-oriented contexts, it is typically performed jointly with related decisions such as instruction selection, binding (assignment of operations to specific functional units), and routing (placement/connection of operations on spatial resources).
Application Scheduling in the IFPEC Framework
In the IFPEC integrated design framework — a constraint programming (CP) based system for generating processor extensions and compiling applications onto them — application scheduling is one of the core design problems solved alongside extension identification, selection, binding, and routing [chunk:451e29a8-318b-49d4-b3ba-9769fc8370d3].
Key properties of the IFPEC approach to application scheduling include:
- Graph-based representation. Both custom instructions (implemented as processor extensions) and the application itself are represented as graphs, which allows the CP framework to reason about them uniformly.
- Constraint programming formulation. Subgraph isomorphism and connected component constraints are used to identify processor extensions and to perform their selection, application scheduling, binding, and routing within a single model.
- Heterogeneous constraint combination. Different heterogeneous constraints can be combined, and the expressiveness of the CP framework makes it possible to solve extension selection, application scheduling, and binding simultaneously, improving the quality of generated results.
- Target architecture. The scheduling problem assumes architectures composed of runtime reconfigurable cells (implementing the selected extensions) tightly connected to a host processor.
- Subgraph isomorphism–driven identification. Because extensions are expressed as computational patterns, scheduling is coupled to the recognition of these patterns inside the application's graph, rather than being a purely temporal assignment problem.
Broader Contexts of Application Scheduling
Outside of IFPEC, application scheduling arises in several related settings documented in the public literature:
- Variable-frequency software scheduling. Schedulability of software tasks can be experimentally estimated across a range of processor frequencies by injecting additional high-priority workload that emulates the effect of frequency scaling, with the resulting estimates used to inform dynamic voltage/frequency scaling (DVS/DFS) control algorithms.
- Compilation for computing-in-memory (CIM) accelerators. Compilation methods targeting CIM accelerators focus on application scheduling optimization specific to CIM hardware. For example, the CMSwitch compiler integrates compute–memory mode switching into the CIM compilation optimization space, using dynamic programming and mixed-integer programming to identify optimal network segments and corresponding mode resource allocations for DNN applications.
Relationship to Other Concepts
- IFPEC (Tool): IFPEC directly performs application scheduling as part of its constraint-programming design flow for processor extensions.
- Custom instruction / processor extension selection: In IFPEC, application scheduling is solved jointly with the selection of which custom instructions to instantiate on the reconfigurable fabric.
- Binding and routing: Application scheduling decisions are coupled to binding (mapping operations to units) and routing (placing/connecting them spatially on the reconfigurable cells).
See Also
- IFPEC — constraint-programming framework that performs application scheduling together with extension selection, binding, and routing.
- DVS/DFS schedulability estimation — experimental method for estimating software schedulability at varied processor frequencies.
- CMSwitch — dual-mode-aware DNN compiler that performs application scheduling for CIM accelerators.