Structured parallel programming is employed to effectively address challenges in parallel programming. Recently, Danelutto et al.  proposed a set of architecture-independent, reusable, parallel building blocks (RISC-pb2l) for high-level, structured, parallel programming frameworks based on the reduced instruction set computing (RISC) approach and demonstrated the modeling of classical skeleton patterns. This paper uses FastFlow, a parallel C++ framework built on the portable operating system interface for Unix (POSIX), to show the usability of RISC-pb2l for modeling general computing models and domain-specific patterns, and to establish its efficiency and scalability.
Wrappers, functionals, and combinators are three building blocks of RISC-pb2l. Wrappers embed existing portions of code into parallel programs, functionals encapsulate parallel computations, and combinators route data to and from functionals’ input and output.
Three general computing models--BSP parallel computation, MapReduce pattern, and Macro dataflow pattern--are modeled here. Initial stages, such as concurrent local computation and graph formulation, are modeled using wrappers and parallel or multiple instruction, single data (MISD) functionals, which execute n identical or different functions, respectively, on n input data items in parallel. The remaining stages are modeled using spread or reduce functionals, which compute multiple or single output items, respectively, using a commutative or associative function on a k-ary tree input with gatherall (N-to-1) or unicast (1-to-N) combinators for data selection, summation, or routing.
For domain-specific patterns, global single population genetic skeleton, orbit skeleton, and network packet processing (NPP) have been modeled. Here, initial stages are modeled using parallel functionals with scatter (1-to-N) or gather (N-to-1) combinators and wrappers to compute specific data. Other stages, such as relevant data collection or summation, are modeled by reduce functionals.
The information is well presented and is useful for parallel application developers with prior knowledge of RISC-pb2l.