Check out the following articles recently published on the latest release of EMB²:
We are glad to announce a major release of EMB² which is the result of more than two years of development. Since the first open source version, we have worked on a number of features and integrated several improvements:
Further information can be found in the CHANGELOG.
Feedback and contributions are very welcome!
Your EMB² team
P.S. If you like our work, a star on GitHub would be greatly appreciated. Thank you!
Sebastian Huber from embedded brains GmbH added multilib support to the EMB² build environment. For example, the following command invoked from the base directory builds and installs EMB² for all multilibs of the
arm-rtems4.12 GCC cross-compiler installation:
Thank you very much for the contribution!
Since the early days of EMB² development, we have put considerable effort on ensuring high code quality and stability. This includes zero compiler warnings at highest warning level, adherence to Google’s coding guidelines using cpplint, unit tests with more than 90% statement coverage, automatic rule checking using cppcheck, and dynamic threading analysis using Helgrind. Most of the tools are regularly run (at least nightly) by our internal CI server. Additionally, every commit triggers a regular build using GCC and Clang on Travis CI.
With the upcoming major release (version 1.0.0), we are happy to announce additional measures that aim to improve the quality of EMB² even further:
EMB² ships with implementations of atomic operations for x86 and ARM processors to be usable with older compilers (supporting C99 / C++03 only). This is important for applications that cannot be migrated easily to more recent language standards. Thanks to Sebastian Huber from embedded brains GmbH, EMB² can now be built using atomic operations provided by C11 / C++11. Just add the option
-DUSE_C11_AND_CXX11=ON when generating native build files, e.g. type
cmake .. -DUSE_C11_AND_CXX11=ON. This way, EMB² can be used on a variety of platforms besides x86 and ARM such as PowerPC, MIPS, or SPARC. Thanks a lot for the great work and contributing to EMB²!
Advanced driver assistance systems (ADAS) require a lot more processing power than traditional automotive applications due to the large amount of sensor data they have to process. In his excellent article “Specialized compilers address ADAS needs” on EDN, Alexander Herz from TASKING (Altium) discusses the challenges in building such systems, from finding a suitable hardware architecture over highly optimized libraries and hardware accelerator support to safety requirements. Regarding parallel programming, which is inevitable for compute-intensive applications, the author states: “Fortunately, libraries like EMB² and LAPACK can be used with relatively little risk, as they were written by experts in this field. As an additional advantage, these libraries ensure a relatively large speed increase due to their parallelism and optimization.” Thank you very much!
Right in time for Christmas, we are proud to announce the largest update EMB² has seen so far. Version 0.5.0 includes several new features and improvements, most notably:
Starting with this release, we use Microsoft’s AppVerifier tool for concurrency fuzzing, a technique that explores different schedules in order to find bugs that depend on the actual execution order of threads.
Sebastian Huber from embedded brains GmbH ported EMB² to RTEMS, an open source real-time operating system (RTOS) that supports standard APIs such as POSIX. RTEMS is used in space flight, medical devices, networking, etc. and runs on a variety of different processor architectures including ARM, PowerPC, Intel, Blackfin, MIPS, and Microblaze. Thanks a lot for the great work and contributing to EMB²!
The research project ARAMiS II funded by the German Federal Ministry for Education and Research successfully started on October 1st. Within the next three years, the consortium consisting of 33 partners under the lead of the Karlsruhe Institute of Technology (KIT) will work on development processes, tools, and platforms for the efficient use of multicore architectures. As mentioned in a recent article on eeNews, this includes the creation of methods to increase safety, efficiency, and comfort in the deployment of multicore technologies and to make them available at an industrial scale. We are very proud to participate in ARAMiS II and will do our best to integrate the results of our work in the area of runtime platforms in EMB².
Tobias Langer from the Laboratory for Safe and Secure Systems (LAS³) at OTH Regensburg will give a talk on real-time capability classes with an application to EMB² at the Embedded Software Engineering Kongress, which will take place from Nov. 28 to Dec. 2 in Sindelfingen, Germany. Looking forward to the talk!
With the introduction of the ‘Projects’ feature in GitHub, we decided to retire JIRA, which we have used so far for issue tracking and planning. All open issues will soon be moved to GitHub. Apologies in advance for the number of mails you will receive in case you are watching the repository. A summary of already closed JIRA issues can be found here.
On August 23, Tobias Schüle presented the results of joint work between Prof. Sunita Chandrasekaran (University of Delaware), Prof. Barbara Chapman (University of Houston), and Siemens on “Exploring Task Parallelism for Heterogeneous Systems Using Multicore Task Management API” at the Workshop on Runtime and Operating Systems for the Many-core Era (ROME) held in conjunction with EuroPar 2016 in wonderful Grenoble, France. The talk showed that MTAPI is very well-suited as an abstraction layer for heterogeneous systems consisting of classical multicore CPUs as well as accelerators such as GPUs. The slides are now available for download from the website of the workshop.
Version 0.4.0 is out! It brings a number of enhancements such as more comfortable interfaces and consistency checks for dataflow networks, task cancellation support and better error checking for the network plugin, and an option that allows the task scheduler to reuse the main thread for improved performance. Also, we resolved a number of mostly minor warnings reported by Grammatech’s CodeSonar tool and fixed a few bugs. As usual, a complete list of changes can be found in the CHANGELOG.
Researchers from the University of Houston have developed an approach for translating parallel OpenMP programs to the Multicore Task Management API (MTAPI). In their paper Deploying OpenMP Task Parallelism on Multicore Embedded Systems with MCA Task APIs, which was presented at 17th IEEE International Conference on High Performance Computing and Communications (HPCC), the authors describe the design of an appropriate runtime library (RTL) and compare the performance with state-of-the-art solutions. Interestingly, the RTL based on the MTAPI implementation provided by EMB² has the least task overhead for more than eight cores and scales much better than the widely used GCC-based implementation for the SparseLU benchmark.
One of the unique features of the Multicore Task Management API (MTAPI) is support for heterogeneous hardware architectures, e.g., systems-on-a-chip integrating accelerators like GPUs or DSPs together with a multicore CPU on a single die. The different hardware units, called nodes in MTAPI terminology, need not even have access to shared memory and may transparently communicate via message passing. In a presentation held at the Embedded Software Engineering Kongress, Tobias Schüle explained the key concepts of MTAPI and showed how they help to abstract from the underlying hardware platforms. A summary of these concepts can be found in the paper (written in German) published in the conference proceedings.
The latest version comes with various updates of the containers, such as a completely reworked and optimized implementation of hazard pointers as well as improved interfaces for the pools. A list of all changes can be found here.
Version 0.3.1 is here! Feedback is more than welcome ;-)
We are happy to announce a major update of EMB²: Version 0.3.0 now covers the full MTAPI standard, which includes basic support for heterogeneous systems. Specialized hardware components such as GPUs or DSPs can be integrated via plugins. Currently, EMB² comes with two ready-to-use plugins, one for OpenCL-capable devices and another one for distributed systems connected via network. Using the built-in load balancer, it is not even necessary to specify where a given set of tasks shall be executed. Besides support for heterogeneous systems, this version also includes a number of changes and improvements.
The Embedded World is one of the largest international fairs for embedded systems. This week, Tobias Schüle gave a talk at the associated conference, which is a perfect forum for knowledge transfer spanning the entire spectrum of hardware, software, and tools for the development of embedded systems. The talk gave an introduction to parallel programming on embedded systems and described the main features of MTAPI / EMB² by means of simple examples. The paper published as part of the conference proceedings is now available for download.
The primary objective of the Multicore Association (MCA) is to define and promote open specifications to enable multicore product development. In an interview with Embedded Computing Design, MCA’s president Markus Levy discusses the challenges of multicore software development and how to get vendors to work together in order to create industry-standard solutions.