AtomicSet for Java Work-Stealing Framework (AJWS)

Today, parallelism is replacing the traditional clock frequency scaling as the foundation for increased compute capacity. Unfortunately, software parallelism is often difficult to identify and expose, which means it is often hard to realize the performance potential of modern processors. Common programming models using threads impose significant complexity to organize code into multiple threads of control and to manage the balance of work amongst threads to ensure good utilization of multiple cores.

Much research has been focused on developing programming models in which programmers simply annotate portions of work that may be done concurrently and allow the system to determine how the work can be executed efficiently and correctly [1].

Further, to ensure the correctness of parallel program, it is important that threads of execution do not interfere with each other while sharing data in the memory (data-race). Atomic Sets for Java (AJ) introduced a data-centric approach for synchronization [2]. Here, the user simply groups fields of objects into atomic sets to specify that these objects must always be updated atomically. However, there is no open-sourced implementation of AJ [3].

AJWS is a new open-srouced system that draws together the benefits of work-stealing and AJ, allowing the application programmer to conveniently and succinctly expose the parallelism inherent in their Java program. We have implemented AJWS by using JastAdd [4] meta-compilation system.

AJWS source code and sample testcases are available at github for download.



[1] http://vivkumar.github.io/javatrycatchws.html
[2] http://www.franktip.org/pubs/toplas2012.pdf
[3] https://www.cs.purdue.edu/sss/projects/aj/
[4] http://jastadd.org/web/