Búsqueda avanzada

Towards a Dynamic Pipeline Framework implemented in (parallel) Haskell


Data streaming processing has given rise to new computation paradigms to provide effective and efficient data stream processing. The most important features of these new paradigms are the exploitation of parallelism, the capacity to adapt execution schedulers, reconfigure computational structures, adjust the use of resources according to the characteristics of the input stream and produce incremental results. The Dynamic Pipeline Paradigm (DPP) is a naturally functional approach to deal with stream processing. This fact encourages us to use a purely functional programming language for DPP. In this work, we tackle the problem of assessing the suitability of using (parallel) Haskell to implement a Dynamic Pipeline Framework (DPF). The justification of this choice is twofold. First, from a formal point of view, Haskell has solid theoretical foundations providing the possibility of manipulating computations as primary entities. From a practical perspective, it has a robust set of tools for writing multithreading and parallel computations with optimal performance. As a result, we present a dynamic pipeline to compute the weakly connected components of a graph (WCC) in Haskell (a.k.a. DP-Haskell). The behavior of DP-Haskell is empirically evaluated and compared with a solution provided by a Haskell library. The evaluation is assessed in three networks of different sizes and topology. Performance is measured in terms of the time of the first result, continuous generation of results, total time, and consumed memory. The results suggest that DP-Haskell, even naive, is competitive with the existing solution provided in the Haskell library. DP-Haskell exhibits a higher continuous behavior and can produce the first result faster. The observed results are encouraging and provide evidence of the benefits that Haskell’s abstractions bring in implementing WCC and DPP. Built on them, we will develop a general and parametric DPF.

Palabras Clave:

Concurrency - Dynamic Pipeline - Haskell - Parallelism





Este artículo tiene una licencia de uso CreativeCommons - Reconocimiento (by)

Descarga el artículo haciendo click aquí.

Ver la referencia en formato Bibtex