MTAPI® provides a standard API for leveraging task parallelism on embedded devices containing symmetric or asymmetric multicore processors, covering a wide range of target architectures.



Multicore processors require software that splits work into tasks that can be executed in parallel on different processor cores. Implementing tasks as threads results in significant overhead for creating and controlling parallel execution. This process is complex, error-prone, and hardware dependent (e.g. the number of threads depends on the number of cores available). Furthermore, programming with threads is limited to a single operating system running on a homogeneous multicore processor. System-wide task management in heterogeneous embedded systems must be realized explicitly with low level communication mechanisms.

MTAPI addresses those issues by providing an API which allows parallel embedded software to be designed in a straight-forward way. It abstracts the hardware details and lets the software developer focus on the parallel solution. Compared to existing APIs that provide task management functionality (i.e. OpenMP, TBB, Cilk), MTAPI is designed for embedded systems. With MTAPI there are no compiler, hardware, or operating system dependencies. With MTAPI, the API is plain C (minimizing ABI interoperability problems), it allows implementations for resource limited devices (in terms of memory footprint and CPU power), it is portable, and covers homogeneous and heterogeneous multicore-architectures, as well as hardware acceleration units.

Core features of MTAPI is dynamic scheduling (i.e. at runtime) and mapping tasks to processor cores. Due to the dynamic behavior, MTAPI is intended for optimizing throughput on multicore systems. The task scheduling strategy can be optimized for latency and fairness. This allows the creation of soft real-time systems.

  • Tobias Schuele, Siemens AG
Frequently Asked Questions
  • What is the difference between Frescor (FRSH-Kernel) and MTAPI?