Pipe-and-filter, Layered Systems and Iterative Refinement Pattern

We already talked about some of this patters but now we will look through them from a parallel perspective.

The pipe-and-filter design pattern processes data streaming, making it to pass trough different filters, conducted into pipes. Those filters and pipes are independent and reusables. We can remove filters and put new ones or even swap them. The data is divided in tokens, and we care about the size of them because that defines the granularity of the computation. We don’t want the tokens to be too large or too small. But in matter of parallelism we also care about the number of filters. We want that number be large enough so we can exploit the concurrency efficiently (keep the system resources busy), but not too large to minimize overhead of transferring data between the stages. The task parallelism patter also needs to be applied.

The layered pattern doesn’t seem to be pretty straight-forward with parallelism but it has a very important feature: there is no shared state among layers. That is a lovely feature when to come to parallelism is about.

The iterative refinement patter consists, basically, of a sequence of steps which make some computation in order to achieve a desired result (exit condition). But is within those steps that the concurrency takes place executing in each step several tasks which, if are independent enough, can be executed in parallel. Of course those tasks need to be synchronized .

Publicado en CS 527,English,Software Engineering | Sin comentarios

Dejar un Comentario

Por favor, se cortés y comenta sobre el tema. Tu e-mail nunca será publicado.

Imagen CAPTCHA CAPTCHA Audio
Refrescar imagen

Sitios de interés