Loading...
Please wait, while we are loading the content...
Similar Documents
Exploiting implicit loop parallelism using multiple multithreaded servers in Java Fabian Breg
| Content Provider | Semantic Scholar |
|---|---|
| Author | Breg, Fabian Bik, Aart J. C. Gannon, Dennis |
| Copyright Year | 1997 |
| Abstract | Since its introduction in the late eighties, the global Internet has grown from a wide area information repository to a large metacomputer consisting of a great number of high performance computers. To exploit this computing power the heterogeneous nature of the Internet has to be overcome. With the introduction of Java [6] and its accompanying Bytecode [7], true portable programs can be written in a high level language that can be downloaded to and run on any computer that hosts a Bytecode interpreter. This feature, together with the communication that the API provides, makes Java a suitable language to implement distributed software systems. The interpretative nature of the Java programs makes it less suitable for high performance computing. Currently several Just In Time (JIT) compilers are available, which translate the Java Bytecode to native machine code just prior to execution. Other attempts to make Java suitable for high performance computing consists of optimizing Java compilers and Java restructuring compilers. An example of the latter kind is Javar [3], which exploits loop parallelism as well as multi-way recursive method parallelism using the multithreading facilities of Java as described in [2]. This document describes the source code transformations needed to exploit loop parallelism using multiple multithreaded servers in a distributed system. We propose and implement a source code restructuring strategy, which uses multiple servers each, running a number of workers to execute a subset of iterations of parallel loops. The communication among these servers is implemented in Java Remote Method Invocation (RMI). Within a server, each worker runs in its own thread of control, which can run in parallel on those machines that supports true multithreading. Figure 1 shows the client, the servers and their workers. The parallelization is driven by annotations that have to be inserted manually in the source code. We propose a set of annotations which can be used to exploit parallelism in fully independent for-loops. Several techniques for dependency analysis exist [1, 11], which can be used to detect loop parallelism. Currently, our compiler does not perform such dependency analysis, but instead relies on the annotations to correctly identify a parallel loop. Do-across like loops are not implemented, because the synchronization overhead in a distributed system tends to be too high. This project extends the work done in [2]. Javar, the compiler developed in this project, is extended to include the transformation of Java programs as described in this document. |
| File Format | PDF HTM / HTML |
| Alternate Webpage(s) | http://www.cs.indiana.edu/ftp/techreports/TR501.pdf |
| Alternate Webpage(s) | http://www.cs.indiana.edu/l/www/ftp/techreports/TR501.pdf |
| Alternate Webpage(s) | http://www.cs.indiana.edu/pub/techreports/TR501.pdf |
| Alternate Webpage(s) | https://www.cs.indiana.edu/pub/techreports/TR501.pdf |
| Language | English |
| Access Restriction | Open |
| Content Type | Text |
| Resource Type | Article |