The MTAPI specification provides an API allowing programmers to develop parallel embedded software with familiar programming processes. MTAPI features include runtime scheduling and mapping of tasks to processor cores. Optionally, the MTAPI implementation provides access to hardware-implemented actions and/or queues to take advantage of processor-specific features and to increase performance.
The open source MTAPI implementation, available under BSD license, is part of a bigger software package that Siemens has named Embedded Multicore Building Blocks (EMB2). EMB2 is a C/C++ library for the development of parallel applications containing several components on top of a base layer that abstracts the operating system and the underlying multicore hardware to ensure portability. Besides MTAPI, EMB2 provides basic parallel algorithms, concurrent data structures, and skeletons for implementing stream processing applications. EMB² comes with C++ wrappers for MTAPI, which simplifies development in object-oriented environments.
The current version of EMB² supports Linux and Windows, but since all platform-specific details are hidden in the base library of EMB², only a few sections may need to be adapted when porting to another platform. Also, it currently supports only homogeneous multicore devices. In 2015, Siemens plans, among other extensions and improvements, to release MTAPI support for multiple nodes with distributed memory (e.g. heterogeneous cores), which could also utilize the Multicore Association’s Communication API (MCAPI) to provide communication between the nodes.
The MTAPI implementation is available for download at GitHub as part of EMB2. Contributions, e.g., ports to other operating systems, are welcomed. The MTAPI specification is also available for free download from the Multicore Association website . Inquiries regarding membership in the Multicore Association and participation in any working group can be made to Markus Levy .