Skeletons and Asynchronous RPC for Embedded Data and Task Parallel Image Processing*This work is supported by the Dutch government in their PROGRESS research program under project EES.5411.

  • Authors:
  • Wouter Caarls;Pieter Jonker;Henk Corporaal

  • Affiliations:
  • The authors are with the Quantitative Imaging Group, Delft University of Technology, The Netherlands. E-mail: w.caarls@tudelft.nl, E-mail: p.p.jonker@tudelft.nl,;The authors are with the Quantitative Imaging Group, Delft University of Technology, The Netherlands. E-mail: w.caarls@tudelft.nl, E-mail: p.p.jonker@tudelft.nl,;The author is with the Faculty of Electrical Engineering, Eindhoven University of Technology, The Netherlands. E-mail: h.corporaal@tue.nl

  • Venue:
  • IEICE - Transactions on Information and Systems
  • Year:
  • 2006

Quantified Score

Hi-index 0.01

Visualization

Abstract

Developing embedded parallel image processing applications is usually a very hardware-dependent process, often using the single instruction multiple data (SIMD) paradigm, and requiring deep knowledge of the processors used. Furthermore, the application is tailored to a specific hardware platform, and if the chosen hardware does not meet the requirements, it must be rewritten for a new platform. We have proposed the use of design space exploration [9] to find the most suitable hardware platform for a certain application. This requires a hardware-independent program, and we use algorithmic skeletons [5] to achieve this, while exploiting the data parallelism inherent to low-level image processing. However, since different operations run best on different kinds of processors, we need to exploit task parallelism as well. This paper describes how we exploit task parallelism using an asynchronous remote procedure call (RPC) system, optimized for low-memory and sparsely connected systems such as smart cameras. It uses a futures [16]-like model to present a normal imperative C-interface to the user in which the skeleton calls are implicitly parallelized and pipelined. Simulation provides the task dependency graph and performance numbers for the mapping, which can be done at run time to facilitate data dependent branching. The result is an easy to program, platform independent framework which shields the user from the parallel implementation and mapping of his application, while efficiently utilizing on-chip memory and interconnect bandwidth.