YASMIN: Yet Another Scheduler MIddleware for heterogeNeous COTS platforms
Commercial-Off-The-Shelf heterogeneous platforms provide immense computational power, but are difficult to program and to correctly use when real-time requirements come into play: A sound configuration of the operating system scheduler is needed, and a suitable mapping of tasks to computing units must be determined. Flawed designs may lead a sub-optimal system configurations and thus to wasted resources, or even to deadline misses and failures.
I propose YASMIN, a middleware to schedule end-user applications with real-time requirements in user space and on behalf of the operating system. YASMIN provides an easy-to-use programming interface and portability. It treats heterogeneity on COTS heterogeneous embedded platforms as a first-class citizen: It supports multiple functionally equivalent task implementations with distinct extra-functional behaviour. This enables the system designer to quickly explore different scheduling policies and task-to-core mappings, and thus, to improve overall system performance.
CECILE: a Compiler for the tEamplay CoordInation LanguagE
We propose a domain-specific functional coordination language TeamPlay and the associated tool chain that consider the non-functional (time, energy, and security) properties as first-class citizens in the application design and development process. This tool chain compiles coordination code to a final executable linked with separately compiled component implementations. We combine a range of analysis and scheduling techniques for the user to choose from like in a tool box.The generated code either implements a static (offline) schedule or a dynamic(online) schedule. With static/offline scheduling all placements and activation times are pre-computed; with dynamic/online scheduling certain decisions are postponed until runtime.
STR2RTS: StreamIT to Real-Time Systems
We all had quite a time to find non-proprietary architecture-independent exploitable parallel benchmarks for Worst-Case Execution Time (WCET) estimation and real-time scheduling. How-ever, there is no consensus on a parallel benchmark suite, when compared to the single-core era and the Mälardalen benchmark suite. This document bridges part of this gap, by presenting a collection of benchmarks with the following good properties: (i) easily analyzable by static WCET estimation tools (written in structured C language, in particular neither goto nor dynamic memory allocation, containing flow information such as loop bounds); (ii) independent from any particular run-time system (MPI, OpenMP) or real-time operating system.
Each benchmark is composed of the C source code of its tasks, and an XML description describing the structure of the application (tasks and amount of data exchanged between them when applicable).Each benchmark can be integrated in a full end-to-end empirical method validation protocol on multi-core architecture. This proposed collection of benchmarks is derived from the well known StreamIT benchmark suite.
Methane is the first version of CECILE that I built during my PhD. It focuses on static scheduling of task-graphs on homogeneous platforms embedding a private local memory per core (SPM). The novelties lie in the co-scheduling of both the data management and execution parts of tasks.