Academia.eduAcademia.edu

Parallel design patterns

description14 papers
group0 followers
lightbulbAbout this topic
Parallel design patterns are reusable solutions to common problems in software architecture that facilitate concurrent execution of processes. They provide structured approaches to manage synchronization, communication, and resource sharing among parallel tasks, enhancing performance and scalability in multi-threaded or distributed systems.
lightbulbAbout this topic
Parallel design patterns are reusable solutions to common problems in software architecture that facilitate concurrent execution of processes. They provide structured approaches to manage synchronization, communication, and resource sharing among parallel tasks, enhancing performance and scalability in multi-threaded or distributed systems.

Key research themes

1. How can the Divide-and-Conquer pattern be generalized and implemented efficiently for parallel programming on multicore systems?

Divide-and-Conquer (DaC) is a fundamental programming paradigm that naturally exposes parallelism by recursively dividing problems into subproblems, solving them independently and combining results. Research in this theme focuses on formalizing the DaC pattern in parallel contexts, providing high-level programming abstractions and template implementations for multicore architectures, and exploring optimization and execution models that exploit available concurrency efficiently. This theme is important because DaC algorithms underpin many real-world applications, yet efficiently parallelizing them remains a challenge for non-expert programmers.

Key finding: This paper presents a new general formal functional specification of the divide-and-conquer pattern that can be parameterized to instantiate various classical parallel programming patterns. It provides a structured analysis... Read more
Key finding: This work proposes a C++11-compliant high-level template interface to implement parallel DaC algorithms aimed at non-expert parallel programmers. It supports multiple backend runtimes (OpenMP, Intel TBB, FastFlow) for... Read more
Key finding: The integration of FastFlow as a backend for the generic parallel pattern interface GrPPI reveals that high-level DaC pattern abstractions can be efficiently realized without significant overhead. The study analyzes... Read more

2. What role do parallel design patterns play in enabling high-level abstractions for complex parallel applications and how do they compare in performance and programmability?

Parallel design patterns encapsulate recurring parallel programming idioms that provide reusable, composable, and high-level abstractions to aid programmers in developing parallel applications. Research in this theme explores how pattern-based frameworks can model real-world complex applications, assess programmability, and optimize performance compared to native or pragma-based parallel implementations. This is crucial because it addresses the challenge of balancing programming productivity and achieving performance on multicore architectures.

Key finding: The study demonstrates that 12 out of 13 applications in the PARSEC benchmark suite can be modeled as compositions of a relatively small set of parallel patterns. Implementations using the FastFlow framework show on average a... Read more
Key finding: This case study shows that Intel TBB's pipeline parallelism constructs can successfully express complex real-world pipeline parallel applications derived from Pthreads implementations, improving maintainability and reducing... Read more
Key finding: This paper argues that design patterns not only communicate design decisions but can systematically derive software architectures. The approach links the architectural features directly to the rationale encoded in design... Read more

3. How do new programming models and languages based on parallel design patterns improve scalability, safety, and productivity in multicore and distributed systems?

New parallel programming languages and models aim to shift away from sequential-by-default designs to types and concurrency models that inherently support parallelism scalability, safety, and ease of use. Research investigates actor-based concurrency, social patterns for multi-agent systems, component integration patterns, and coordinated concurrent activities. These models leverage parallel design patterns to build abstractions that address common pitfalls such as race conditions, deadlocks, complexity of integration, and code modularity. Understanding and refining these paradigms is essential for managing the increasing parallelism in modern hardware.

Key finding: Encore is a parallel programming language designed from the ground up to support scalable, safe parallelism using actor-based concurrency, capabilities for race freedom, and parallel combinators. It integrates coarse-grained... Read more
Key finding: This work introduces the concept of social patterns in Multi-Agent Systems (MAS) architectures within the TROPOS methodology, focusing on social and intentional aspects rather than traditional object-oriented patterns. By... Read more
Key finding: DECCA presents a high-level component-oriented methodology and Java API for developing concurrent and coordinating systems that abstracts low-level concurrency primitives and improves reusability. It enables systematic... Read more

All papers in Parallel design patterns

In the last years, pattern-based programming has been recognized as a good practice for efficiently exploiting parallel hardware resources. Following this approach, multiple libraries have been designed for providing such high-level... more
In the last years, pattern-based programming has been recognized as a good practice for efficiently exploiting parallel hardware resources. Following this approach, multiple libraries have been designed for providing such high-level... more
This paper introduces SPar, an internal C++ Domain-Specific Language (DSL) that supports the development of classic stream parallel applications. The DSL uses standard C++ attributes to introduce annotations tagging the notable components... more
GMaVis is a domain-specific language (DSL) that simplifies the creation of visualization from geospatial information, which is designed to use multi-core architecture parallelism to process data in parallel. Its compiler abstracts... more
Multicore embedded systems introduce new opportunities and challenges. Scaling of computational power is one of the main reasons for a transition to a multicore environment. Parallel design patterns, such as Map Reduce, Task Graph, Thread... more
Multi-core systems are becoming mainstream. However, it is still a big challenge to develop concurrent software. Parallel Design Patterns can help in the migration process from legacy sequential to high-performing parallel code. Therefore... more
We propose a data flow based run time system as an efficient tool for supporting execution of parallel code on heterogeneous architectures hosting both multicore CPUs and GPUs. We discuss how the proposed run time system may be the target... more
We describe an approach aimed at addressing the issue of joint exploitation of control (stream) and data parallelism in a skeleton based parallel programming environment, based on annotations and refactoring. Annotations drive efficient... more
We propose a data flow based run time system as an efficient tool for supporting execution of parallel code on heterogeneous architectures hosting both multicore CPUs and GPUs. We discuss how the proposed run time system may be the target... more
This paper introduces SPar, an internal C++ Domain-Specific Language (DSL) that supports the development of classic stream parallel applications. The DSL uses standard C++ attributes to introduce annotations tagging the notable components... more
Multicore embedded systems introduce new opportunities and challenges. Scaling of computational power is one of the main reasons for a transition to a multicore environment. Parallel design patterns, such as Map Reduce, Task Graph, Thread... more
Parallel design patterns can be fruitfully combined to develop parallel software applications. Different combinations of patterns can feature different QoS while being functionally equivalent. To support application developers in... more
Download research papers for free!