Groovy Parallel Patterns: A Process oriented Parallelization Library
A novel parallel patterns library, Groovy Parallel Patterns, is presented which, from the outset, has been designed to exploit more general process parallelism than the usual data and task parallel architectures. The library executes on a standard Java Virtual Machine. The library provides a collection of processes that can be plugged together to form a variety of parallel architectures and is intrinsically its own DSL. A network of processes is guaranteed to be deadlock and livelock free and terminate correctly and this is proved by the use of formal methods. Error capture and a basic logging mechanism have been incorporated. The library enables effective refinement of solutions between process networks which can be checked also using formal methods. A library user is only required to create the required methods as pieces of sequential code, typically taken from extant sequential solutions, which can then be invoked by the processes as required. The utility of the library is demonstrated by several examples including; Monte Carlo Methods, Concordance, Jacobi solutions, N-body problems and Mandelbrot, which is implemented on both a multicore processor and a workstation cluster. The examples are analysed for speedup and efficiency, which show good and consistent performance improvement up to the number of available processor cores and workstations.
READ FULL TEXT