The aim of this library is to make it easier for programmers unfamiliar with 
parallel processing techniques to construct solutions that can exploit modern 
multi-core machines.  The code the programmer must write is essentially the 
sequential code they already have available to them, admittedly reformatted to 
enable access by the parallel architecture.
The architecture is defined using a high-level DSL and follows a dataflow style 
of processing such that each element of the data flow program is allocated to a 
different parallel process.  The DSL specification is then processed by a 
builder program that creates the required process definitions and execution 
structure required to invoke the code on a multi-core processor.  The input 
specification is transformed into a runnable .groovy file.
The library has a formal proof to ensure any legal combination of processes 
contained in the library will not fail due to deadlock or livelock and will 
terminate.  The builder program ensures that any process structure it creates 
is a legal combination, meaning the user does not have to concern themselves 
with such technicalities.
The library is provided with a visualisation tool that lets the user follow the 
movement of objects as they pass through the architecture using a user defined 
property of the object so the visualisation can be easily related to the user's 
own coding.  The visualisation lets the user retrospectively examine a run of 
the application so that places where further parallelisation can be used can be 
more easily identified.
A free e-book is available that gives more detail of the library, and several 
demonstration applications are given that take standard sequential codes and 
show how they can be parallelised.
https://bookboon.com/en/parallel-programming-made-simple-ebook
The demonstration codes, used in the book, are available at
https://github.com/JonKerridge/GPP_Demos
The build.gradle file contained will download all the required libraries and 
builder program used by the demonstrations.
The libraries are held as Github packages and as such the user needs to have a 
gradle.properties file containing a gpr.user and gpr.key field:
gpr.user=userName
gpr.key=userPersonalAccessToken

see 
https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token
 for more details.

Currently the library uses Groovy 3 and Java 11.  I will be modifying the 
library to Groovy 4 and Java 17 as and when the situation becomes stable.
The Groovy Parallel Patterns Library builds upon a much smaller library 
GroovyJCSP, published previously and the now well established JCSP library both 
of which are downloaded by the build file.  These libraries required the user 
to have a detailed understanding of parallel processing, which were described 
in the free e-books:
https://bookboon.com/en/using-concurrency-and-parallelism-effectively-i-ebook
https://bookboon.com/en/using-concurrency-and-parallelism-effectively-ii-ebook
The JCSP library was made available as part of the GPars project.

I am currently creating a system that allows a parallelisation to use a cluster 
of multi-core workstations so a heavy workload can be distributed over a larger 
number of processors.

Comments and helpful suggestions always welcome,
Jon


Jon Kerridge PhD FBCS FHEA CITP CEng
Emeritus Professor of Computing
School of Computing
Edinburgh Napier University
Merchiston Campus
10 Colinton Road
Edinburgh
EH10 5DT

Email: j.kerri...@napier.ac.uk<mailto:j.kerri...@napier.ac.uk>


This message and its attachment(s) are intended for the addressee(s) only and 
should not be read, copied, disclosed, forwarded or relied upon by any person 
other than the intended addressee(s) without the permission of the sender. If 
you are not the intended addressee you must not take any action based on this 
message and its attachment(s) nor must you copy or show them to anyone. Please 
respond to the sender and ensure that this message and its attachment(s) are 
deleted.

It is your responsibility to ensure that this message and its attachment(s) are 
scanned for viruses or other defects. Edinburgh Napier University does not 
accept liability for any loss or damage which may result from this message or 
its attachment(s), or for errors or omissions arising after it was sent. Email 
is not a secure medium. Emails entering Edinburgh Napier University's system 
are subject to routine monitoring and filtering by Edinburgh Napier University.

Edinburgh Napier University is a registered Scottish charity. Registration 
number SC018373

BSL users can contact us via contactSCOTLAND-BSL, the on-line British Sign 
Language interpreting service. Find out more on the contactSCOTLAND website.

Reply via email to