Facilitating Component Reusability in Embedded Systems with GPUs

One way to fulfill the increased requirements (e.g., performance) of modern embedded systems is through the usage of GPUs. The existing embedded platforms that contain GPUs bring several challenges when developing applications using the component-based development methodology. With no specific GPU support, the component developer needs to encapsulate inside the component, all the information related to the GPU, including the settings regarding the GPU resources (e.g., number of used GPU threads). This way of developing components with GPU capability makes them specific to particular contexts, which negatively impacts the reusability aspect. For example, a component that is constructed to filter 640\(\,\times \,\)480 pixel frames may produce erroneous results when reused in a context that deals with higher resolution frames. We propose a solution that facilitates the reusability of components with GPU capabilities. The solution automatically constructs several (functional-) equivalent component instances that are all-together used to process the same data. The solution is implemented as a state-of-the-practice component model (i.e., Rubus) and the evaluation of the realized extension is done through the vision system of an existing underwater robot.

[1]  Jukka Mäki-Turja,et al.  The Rubus component model for resource constrained real-time systems , 2008, 2008 International Symposium on Industrial Embedded Systems.

[2]  Theo Ungerer,et al.  AUTOSAR OS on a message-passing multicore processor , 2012, 7th IEEE International Symposium on Industrial Embedded Systems (SIES'12).

[3]  Peter J. Ashenden,et al.  Programming models for hybrid CPU/FPGA chips , 2004, Computer.

[4]  Jan Carlson,et al.  Adding Support for Hardware Devices to Component Models for Embedded Systems , 2011, ICSEA 2011.

[5]  Séverine Sentilles,et al.  Extending the Rubus Component Model with GPU-Aware Components , 2016, 2016 19th International ACM SIGSOFT Symposium on Component-Based Software Engineering (CBSE).

[6]  Arvinder Kaur,et al.  Component Based Software Engineering , 2010 .

[7]  Ivica Crnkovic,et al.  Building Reliable Component-Based Software Systems , 2002 .

[8]  Michael Tiegelkamp,et al.  IEC 61131-3: Programming Industrial Automation Systems: Concepts and Programming Languages, Requirements for Programming Systems, Decision-Making Aids , 2001 .

[9]  Gabriel Campeanu,et al.  Parallel Execution Optimization of GPU-aware Components in Embedded Systems , 2017, SEKE.

[10]  Séverine Sentilles,et al.  A Classification Framework for Software Component Models , 2011, IEEE Transactions on Software Engineering.

[11]  Christoph W. Kessler,et al.  The PEPPHER Composition Tool: Performance-Aware Dynamic Composition of Applications for GPU-Based Systems , 2012, 2012 SC Companion: High Performance Computing, Networking Storage and Analysis.

[12]  Markus Vincze,et al.  A fast stereo matching algorithm suitable for embedded real-time systems , 2010, Comput. Vis. Image Underst..