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.