Abstract:
In this paper we show how implicit parallelism in multi-way recursive methods, typically used to implement tree traversal or divide-and-conquer algorithms, can be made explicit by a restructuring compiler using the multi-threading mechanism of Java. Expressing parallelism in Java itself clearly has the advantage that the transformed program remains portable. After compilation of the transformed Java program into byte-code, speedup can be obtained on any platform on which the Java byte-code interpreter support the true parallel execution of threads, whereas only a slight overhead is induced on uni-processors. 1 Introduction To obtain true portability, a Java program is compiled into the architectural neutral instructions (byte-code) of an abstract machine (the Java Virtual Machine), rather than into native machine code. In this manner, a compiled Java program can run on any platform on which a Java byte-code interpreter is available. Although the interpretation of byte-code is substant...
Citations
|
706
|
The Java Programming Language
– Arnold, Gosling
- 1996
|
|
553
|
High performance compilers for parallel computing
– Wolfe
|
|
420
|
Optimizing supercompilers for supercomputers
– Wolfe
- 1982
|
|
402
|
Monitors: An operating system structuring concept
– HOARE
- 1974
|
|
398
|
Supercompilers for Parallel and Vector Computers
– Zima, Chapman
- 1990
|
|
329
|
Dependence Analysis for Supercomputing
– Banerjee
- 1988
|
|
289
|
Advanced Compiler Optimizations for Supercomputers
– Padua, Wolfe
- 1986
|
|
143
|
Parallel Computing: Theory and Practice
– Quinn
- 1993
|
|
121
|
Java in a Nutshell, O'Reilly & Associates
– Flanagan
- 1996
|
|
115
|
Concurrent Programming in Java
– Lea
- 1999
|
|
113
|
Parallel Programming and Compilers
– Polychronopoulos
- 1988
|
|
102
|
The Structure of Computers and Computations
– Kuck
- 1978
|
|
98
|
Loop Transformations for Restructuring Compilers: The Foundation
– Banerjee
- 1993
|
|
90
|
Designing Efficient Algorithms For Parallel Computers
– Quinn
- 1987
|
|
76
|
Compiler algorithms for synchronization
– Midkiff, Padua
- 1987
|
|
45
|
A Global Approach to Detection of Parallelism
– Callahan
- 1987
|
|
31
|
Quicksort
– Hoare
- 1962
|
|
20
|
Crafting a Compiler. Benjamin-Cummings, Menlo Park
– Fischer, LeBlanc
- 1988
|
|
20
|
Compiler generated synchronization for DO loops
– Midkiff, Padua
- 1986
|
|
20
|
The Java Handbook
– Naughton
- 1996
|
|
19
|
On reducing data synchronization in multiprocessed loops
– Li, Abu-Sufah
- 1987
|
|
16
|
High speed multiprocessors and compilation techniques
– Padua, Kuck, et al.
- 1980
|
|
16
|
Introduction to Compiler Construction
– Parsons
- 1992
|
|
14
|
Limited processor scheduling of doacross loops
– Cytron
- 1987
|
|
14
|
Execution of parallel loops on parallel processor systems
– Polychronopoulos, Kuck, et al.
- 1986
|
|
13
|
Exploring Java. O'Reilly & Associates
– Niemeyer, Peck
- 1996
|
|
8
|
Foundations of Parallel Programming
– Lewis
- 1994
|
|
8
|
The Dependence Analysis and Synchronization of Parallel Programs
– Midkiff
- 1993
|
|
6
|
Introduction to Parallel Programming
– Kumar, Grama, et al.
- 1994
|
|
5
|
beyond vectorization for multiprocessors
– Doacross
- 1986
|
|
4
|
et al. Tricks of the Java Programming Gurus
– Vanderburg
- 1996
|
|
2
|
Java Unleashed. Samsnet
– Morrison
- 1996
|