New Deterministic Parallel Java Project
Researchers look to leverage multicore and parallel systems with new parallel implementation of Java.
Researchers at the University of Illinois’ Universal Parallel Computing Research Centre are developing a parallel implementation of Java.
The University of Illinois at Urbana-Champaign have launched their Deterministic Parallel Java (DPJ) implementation project in an effort to leverage multicore and parallel systems, and to “make parallelism easy.” It aims to simplify the debugging and testing of parallel software by catching potential data races at compile-time.
In a press release, the spokeswoman for the Universal Parallel Computing Research Centre (UPCRC) at the University of Illinois at Urbana-Champaign, claimed this is the first language to guarantee deterministic (where a program produces the same visible output for a given input, in all executions) semantics without run-time checks for general-purpose, object-oriented programs. It is also the first to use compile-time type checking or parallel operations on arrays of references to objects. It is also the first language to use regions and effects for nested data structures. Looking to future releases, she predicted it would be the first language to guarantee deterministic use of object-oriented parallel frameworks, and allow safe mixing of deterministic and non-deterministic code.
The DPJ implementation will help developers port segments of sequential Java applications to run on multicore systems, and rewrite parts of parallel Java apps for simplifying the debugging, testing and long-term maintenance. The “near-term goal” is for DPJ to provide a test bed for further research into deterministic-by-default programming models. The current design, features fork-join parallelism, and determinism checking based on the ‘region’ concept, where the programmer partitions the heap into regions by annotating classes. DPJ supports concurrent collections and object-oriented parallel frameworks. The team have also designed a DPJizer tool to automatically infer method effect summaries, based on the region information.
A DPJ-to-Java compiler based on the javac compiler is available now. Version 1.0 of DPJ is also available for download. This release implements the core deterministic language, and has been tested on Linux and Mac OS X.
The project is funded by the National Science Foundation, Intel and Microsoft.