  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.
