Fast prototyping of parallel-vision applications using functional skeletons

Jocelyn Sérot, Dominique Ginhac, Roland Chapuis, Jean-Pierre Dérutin
2001 Machine Vision and Applications  
We present a design methodology for real-time vision applications aiming at significantly reducing the design-implement-validate cycle time on dedicated parallel platforms. This methodology is based upon the concept of algorithmic skeletons, i.e., higher order program constructs encapsulating recurring forms of parallel computations and hiding their low-level implementation details. Parallel programs are built by simply selecting and composing instances of skeletons chosen in a predefined
more » ... A complete parallel programming environment was built to support the presented methodology. It comprises a library of vision-specific skeletons and a chain of tools capable of turning an architectureindependent skeletal specification of an application into an optimized, deadlock-free distributive executive for a wide range of parallel platforms. This skeleton basis was defined after a careful analysis of a large corpus of existing parallel vision applications. The source program is a purely functional specification of the algorithm in which the structure of a parallel application is expressed only as combination of a limited number of skeletons. This specification is compiled down to a parametric process graph, which is subsequently mapped onto the actual physical topology using a third-party CAD software. It can also be executed on any sequential platform to check the correctness of the parallel algorithm. The applicability of the proposed methodology and associated tools has been demonstrated by parallelizing several realistic real-time vision applications both on a multi-processor platform and a network of workstations. It is here illustrated with a complete road-tracking algorithm based upon white-line detection. This experiment showed a dramatic reduction in development times (hence the term fast prototyping), while keeping performances on par with those obtained with the handcrafted parallel version. 272 J. Sérot et al.: Fast prototyping of parallel-vision applications using functional skeletons the algorithm under realistic operating conditions -at least a dozen images per second for the application presented in Sect. 4 -effectively rules out any prototyping phase solely based upon off-line, sequential simulation on stock hardware. Hence, the need for a programming methodology allowing rapid prototyping of real-time vision applications on dedicated parallel architectures. This paper proposes such a methodology, based upon the concept of parallel skeleton. Skeletons [2, 13, 39] are highlevel programming constructs encapsulating certain common forms of parallel computations to make them readily available for the application programmer. Since their introduction by Cole in [13] , skeletons have motivated a significant body of work, both on theoretical aspects and implementation issues. However, there are relatively few experiences with the approach applied in practice to realistic, large-scale problems. This paper tries to fill this gap by demonstrating the utility of a skeleton-based parallel-programming methodology in the domain of real-time vision applications. It is organized as follows: Section 2 is a general presentation of the so-called skeleton-based parallel-programming methodology and of its application to real-time imageprocessing problems. Section 3 describes a complete parallelprogramming environment (SKIPPER) built upon this approach and covering all the stages of program development, from architecture-independent specification to target code generation. The effectiveness of the proposed methodology is assessed in Sect. 4, by means of a realistic case study. Finally, lessons learnt while conducting this work and further work to be done are summarized in Sect. 5. Skeleton-based parallel programming Almost every paper dealing with skeleton-based parallel programming has its own definition of skeletons. One of the latest is given by Cole in [26]: "As with many good ideas, the underpinning observation is, in retrospect, "obvious": within the existing body of parallel algorithms a number of patterns recur frequently. These patterns are composed of computations and the interactions between them and can be conceptually abstracted away from the details of the activities they control. Such abstractions have come to be known as algorithmic skeletons or simply skeletons." Another definition, more inspired by implementation issues, is given by Bratvold in [6]: "It has been observed [. . . ] that parallel programs written in explicitly parallel languages consist of two different kinds of code, often tightly interwoven: pieces of task-specific code implementing the individual steps of the algorithm, and code for structuring the program into patterns of computation and communication for parallel execution. It is typically only in the latter kind of code that there is a need for describing low-level resource allocation and for dealing with those aspects of parallel programming known to pose the greatest problems. The number
doi:10.1007/s001380050146 fatcat:yeuoewp6rndabitchtlo4u63ca