Tech Focus
OpenMP, MCAPI & embedded multicore software design
What the new OpenMP standard brings to embedded multicore software design
Use OpenMP for programming parallel threads in multicore applications: Part 1
Multicores, software tools, languages and the Charge of the Light Brigade
The Nulticore effect
Editor's Note
As noted in the 2012 Embedded Market Study, only a small minority of embedded systems developers have made the move to multicore SoCs even though a typical embedded systems design often makes use of anywhere from two to 10 or more MCUs.
As Jack Ganssle continues to hammer on in columns such as “The Nulticore effect , ” part of the reason is that it just does not make sense in many deeply embedded MCU designs. But another reason may be the reluctance of developers to give up well understood sequential C programming methods until there is a clear platform independent roadmap that allows migration of their code to the much more parallelism-intensive multicore environment.
For some developers, the OpenMP standard has offered a way out, as noted in a “Use OpenMP for programming parallel threads in multicore applications ,” a four part series by Shameem Akhter and Jason Roberts, despite the fact that it is a standard developed for high performance computing where there are fewer constraints on memory and CPU resources. Now, however, there may be hope for the rest of the embedded developer community whose much more resource-constrained designs have ruled out the use of OpenMP.
In “What the new OpenMP standard brings to embedded multicore software design , ” Sunita Chandrasekaran and Barbara Chapman describe the progress that has been made in the newest version of the OpenMP standard towards making it more embedded systems friendly. In it, the authors also report on progress being made toward integrating OpenMP with the Multicore Association's MCAPI specifications to provide mechanisms by which OpenMP can be used in a wide variety of more resource -constrained embedded MCU designs.
In addition of a variety of white papers, webinars, online classes and development articles included here, my Editor's Top Picks of recent papers from conferences and journal proceedings on the use of OpenMP and MCAPI in embedded designs are:
OpenMP Implementation & Performance on an Embedded Renesas M32R Implementing OpenMP on a high performance embedded multicore MPSoC Using MCAPI to lighten an MPI load Software standards for the multicore era
(Editor's Note: In addition to a new newsletter format, Embedded.com also undergone a major redesign as part of its relaunch as an independent online site. Read “Welcome Home” by Colin Holland for more details. )
Development
What the new OpenMP standard brings to embedded multicore software design
The authors describe how the OpenMP shared memory muliticore programming model is being adapted to the needs of embedded systems designs.
Use OpenMP for programming parallel threads in multicore applications: Part 1
In the first of four articles, Intel's Shameem Akhter and Jason Roberts present the case for the OpenMP API as a way to write code for highly parallel multicore and multithreaded designs.
Using OpenMP for programming parallel threads in multicore applications: Part 2
In the second of four articles, Intel's Shameem Akhter and Jason Roberts present the case for the OpenMP API as a way to write code for highly parallel multicore and multithreaded designs. This week: managing shared and private data.
Using OpenMP for programming parallel threads in multicore applications: Part 3
In the third of four articles on the OpenMP API as a way to write code for highly parallel multicore and multithreaded designs, Intel's Shameem Akhter and Jason Roberts discuss performance-oriented programming.
Using OpenMP for programming parallel threads in multicore applications: Part 4
In the final of four articles on the OpenMP API as a way to write code for highly parallel multicore and multithreaded designs, Intel's Shameem Akhter and Jason Roberts discuss the OpenMP Library Functions and how to use them.
Evaluating the performance of multi-core processors- Part 1
In a two part series, Max Domeika, author of “Software Development for Embedded Multi-core Systems” evaluates the various processor benchmark suite available, with examples of how to estimate application performance. Part 1: Choosing the right benchmark suite.
Threading through the parallel code optimization maze: Part 1
In this three part series, Max Domeika, author of “Software Development for Embedded Multicore Systems,” outlines how to use multithreading to parallelize code for use in multicore apps. Part 1: A parallelization and threading Primer
Common multicore programming problems: Part 1 -Threads, data races, deadlocks and live locks
In this four part series, Shameem Akhter and Jason Roberts survey common multi-core programming problems and provide some insight into their solution. First up: Too many threads, data races, deadlocks and livelocks.
Multicore programming: it's all in the messaging
By making use of familiar software development frameworks such as those based on message passing, Sven Brehmer thinks the transition to embedded designs based on multicore architectures can be considerably simplified.
Embedded multicore needs communications standards
Multicore systems are popular but problematic. The authors describe the problem with communications APIs and what the Multicore Association is doing about it.
Thread synchronization techniques for better multicore system power/performance tradeoffs
An in-depth look at a thread synchronization mechanism based on hardware supplied primitives for use in multicore designs to guarantee both power savings and improved system performance as well as RTOS overhead.
Getting started with multicore programming: Part 1
Guidelines to finding the parallelism in your multicore design and developing a methodology that starts with sequential C-code and incrementally adds parallelism. Part 1: what makes parallelizing code so hard.
Products
DESIGN East – aicas releases Realtime, Multicore JamaicaVM for VxWorks
aicas announces the release of Realtime Multicore JamaicaVM development toolchain and runtime for Wind River Systems VxWorks Realtime Operating System.
Sierraware introduces a paravirtualization hypervisor for ARM architectures
The open source SierraVisor Hypervisor from Sierraware allows multiple operating systems, to run concurrently on any ARM11, Cortex-A9, or Cortex-A15 platform.
Poly-Platform 2.0 features enhanced memory management for multicore apps
PolyCore Software, Inc. (PSI) has added significant functionality to Version 2.0 of its Poly-Platform multicore software platform.
New version of PLS Universal Debug Engine simplifies multicore control and debugging
PLS Universal Debug Engine (UDE) 3.2 features new functions for multicore control, unique visualization capabilities at system level, and dedicated support for a wide range of the latest 32-bit SoCs from different manufacturers.
Software engineers get early access for C-code parallelization
Vector Fabrics has added vfLabs to its cloud-based tool suite for parallelizing sequential C code that gives software engineers an early opportunity to try out functionality as it is developed.
|