ABSTRACT

This chapter outlines important application paradigms, known in the context of parallel programming that are typical of many problems from various domains. Specific parallelization techniques developed for these templates can then be used for corresponding applications. This chapter includes a description and discussion on the following: Basic terms used in parallelization of algorithms and parallelization approaches to typical programming paradigms including master-slave, geometric parallelism, pipelining, and divide-and-conquer. The master-slave paradigm may be implemented in various ways. In pipeline type processing, one can distinguish distinct stages of processing through which each of the input data packet needs to go. A divide-and-conquer algorithm can be represented by a tree in which nodes denote subproblems. In order to parallelize a general divide-and-conquer tree efficiently, a dynamic approach with partitioning of the tree can be used.