Procol - Space-Based Multicore Programming in Java

Process Coordination Library (Procol) is a project that investigates the use of space-based systems for multi-core programming in the Java programming language. It's programming model strives to combine the space-based choreography of concurrent components with the orchestration of domain-specific activities and space operations. The goal is to provide a coordination library that separates domain-specific implementation of component activity from the cumbersome implementation of concurrency in Java.

Industry today is relying on hyper-threading and increasing processor count. These new performance drivers make it necessary to explicitly consider concurrency. Unfortunately, our current programming languages rely on mechanisms that require to cut away unwanted non-determinism (concurrency), instead of careful introduction. Even worse, after years of sequential programming practice, the majority of software developers today are short on parallel programming experience. The challenge is not solely software performance and speed-up, but also to provide a convenient way to participate in the new performance drivers in general. Procol is intended to adress this challenge.

Procol is a research project. Expect a prototype, not a product. It is also subject to the following paper:

Gudenkauf, S., & Hasselbring, W. (2011). Space-Based Multi-Core Programming in Java. In C. Wimmer & C. W. Probst (Eds.), PPPJ 2011: Proceedings of the 9th International Conference on the Principles and Practice of Programming in Java (pp. 41-50). New York: The Associacion for Computing Machinery, Inc.

Contents

Procol consists of the following parts:

  • An extended version of the LighTS tuplespace framework that contains multiple alternative implementations of the core tuplespace datastructure
  • A benchmark suite for the tuplespace framework to investigate its performance on multi-core systems
  • A component layer that defines the components that communicate via the tuplespace framework in a component choreography; internally, these components represent orchestrations of fine-grained domain-specific activities and the tuplespace coordination primitives

Future Work

The Procol project is in an early state and there is still much to do. We are currently working on the following extensions:

  • Refinements of the benchmark suite
  • A more efficient matching mechanism for tuplespace look-up in the tuplespace framework
  • A Domain-specific coordination language to generate code from, see SCOPE DSL
  • More benchmarking

Download

Procol is hosted as an open source project by SourceForge. It contains the following elements:

  • The extended LighTS tuplespace framework including the benchmark suite
  • The experimental component layer framework
  • A Mandelbrot application that illustrates how Procol is used
  • A Mandelbrot application that is implemented using conventional Java threads for comparative performance evaluation. Its implementation follows the instructions of the project course Mandelbrot Set Visualization held by Daniel Tang at the Purdue University in 2009.

Go, grab the current version from the Sourceforge SVN

Else, take this (slightly older non-Maven) archive:

APIs

The API of Procol can be found here (old version, new version will come soon):

List of Known Tuple Space Implementations

I collected a list of tuple space implementations along with some information copied from various internet sites:

Contact

Please feel free to contact me <stefan( (at) )gudenkauf.de> if you have any questions on the procol framework.

 
start.txt · Last modified: 2012/05/21 11:21 by sgudenkauf
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki