Run-Time Support for the Automatic Parallelization of Java Programs

  • Authors:
  • Bryan Chan;Tarek S. Abdelrahman

  • Affiliations:
  • The Edward S. Rogers Sr., Department of Electrical and Computer Engineering, University of Toronto, Toronto, Ontario, Canada M5S 3G4 chanb@eecg.toronto.edu;The Edward S. Rogers Sr., Department of Electrical and Computer Engineering, University of Toronto, Toronto, Ontario, Canada M5S 3G4 tsa@eecg.toronto.edu

  • Venue:
  • The Journal of Supercomputing
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

We describe and evaluate a novel approach for the automatic parallelization of programs that use pointer-based dynamic data structures, written in Java. The approach exploits parallelism among methods by creating an asynchronous thread of execution for each method invocation in a program. At compile time, methods are analyzed to determine the data they access, parameterized by their context. A description of these data accesses is transmitted to a run-time system during program execution. The run-time system utilizes this description to determine when a thread may execute, and to enforce dependences among threads. This run-time system is the main focus of this paper. More specifically, the paper details the representation of data accesses in a method and the framework used by the run-time system to detect and enforce dependences among threads. Experimental evaluation of an implementation of the run-time system on a four-processor Sun multiprocessor indicates that close to ideal speedup can be obtained for a number of benchmarks. This validates our approach.