| Z. Budlimic and K. Kennedy. Optimizing Java: theory and practice. Concurrency - Practice and Experience, 9(6):445--464, June 1997. |
....integrated into the JVM This work was undertaken by the author between October 1997 and July 1998 in the context of the Pegasus II project. It is hoped that this work will form deliverable 4.1.4 and much of 4.1.5 and 4.3. 1. 1 Overview Aside from attempts to optimize generated bytecode [BK97] most existing work on improving the performance of Java applications relates to the design and implementation of just in time (JIT) compilers which translate platform independent Java bytecode into native code at run time [CFM 97, Age97, Har97] The fundamental problem with this approach ....
Z. Budlimic and K. Kennedy. Optimizing Java: theory and practice. Concurrency - Practice and Experience, 9(6):445--464, June 1997.
....The Syracuse common runtime also supports an older subset HPF system [61] has a user level C interface, and is being used as the basis of a new HPJava translator. Rochester [31, 34] and Indiana [13, 14, 17, 16] are also developing Java compilers. Rice is working on Java compiler optimizations [19]. 2.9 Java and SPMD programming A signi cant new task in the revised statement of work submitted in July 97 was the proposal to provide an infrastructure supporting high level SPMD programming practice. This will be a valuable by product of the project. Beyond its role as a target for parallel ....
....resulting speci cation is a better match to the performance and portability requirements of HPC runtime systems than the more generic MPI standard. 36 10 Rice University Rice have contributed through the runtime for Fortran 77D [30] They have also been working on optimization of Java programs [19] and have advised on associated runtime requirements. 37 A Deliverable Software We intend to distribute the collected papers and software from the project as a CD ROM. There are several software packages currently available at NPAC through the PCRC home page: ....
Zoran Budimlic and Ken Kennedy. Optimizing Java|theory and practice. Concurrency: Practice and Experience, 9(6):445, 1997. 40
....are dened and where they are used. Thus, the possible arguments to each instruction are readily available, as are the places where the result value(s) will be used. Other approaches to analyzing bytecode have either abstracted the stack away in favor of three address code (Budimlic and Kennedy [5]) or used some other intermediate representation (Cierniak [7] That is not necessary, since values on the stack can be treated as normal variables, as long as the height of the stack is known. The height of the stack is guaranteed to be inferable for any program that passes the bytecode verier. ....
....call elimination and type check elimination when compiling Java Byte Code programs to C. They get a performance increase of 70 on the CaoeeineMarks benchmark on their optimized versions over their non optimized versions. Budimlic and Kennedy have presented three ways to optimize Java programs [5]. They only consider developer side optimization, and so cannot make any inter procedural analysis. They have made a bytecode to bytecode optimizer which performs a series of standard optimizations. They use expression trees as an intermediate representation, as they consider the stack too ....
Zoran Budimlic and Ken Kennedy. Optimizing Java, theory and practice. Concurrency: Practice and Experience, feb 1997.
.... demonstrate the viability of high performance computing in Java and to encourage its greater adoption in the computational science community, several authors have ported numerical libraries to Java [1, 5, 19] written Fortran to Java translators [8, 10] developed compilation technology for Java [6, 7, 25], and written class libraries to address deficiencies in the Java language for numerical computing [26] Although these studies demonstrate the potential of Java for high performance computing, several factors limit their usefulness in determining whether large scale scientific applications ....
Z. Budimlic and K. Kennedy. Optimizing Java: Theory and practice. Concurrency: Practice and Experience, 9(6):445--463, June 1997.
....We believe that with an increasing popularity of just in time or dynamic compilation and with an increasing use of program analysis in software development environments, there is a strong need for demand driven call graph analysis techniques. In a dynamic or just in time compilation environment [4, 17, 8], aggressive compiler analysis and optimizations are applied to selected portions of the code, and not to other less frequently executed or never executed portions of the code. Therefore, the set of procedures called needs to be computed for a small set of call sites, and not for all the call ....
Z. Budimlic and K. Kennedy. Optimizing Java: Theory and practice. Concurrency Practice and Experience, 9(11):445--63, November 1997.
....behavior: data reads are reduced by 12 and runtime by 14 on average. 8 Related Work Our Previous Work. The idea of doing inline allocation automatically is by no means new [6] but previous systems have had insucient analysis power achieve general automatic object inlining. For example, [8] presents a transformation that inlines the object state in stack frames, but they do not present automatic analysis sucient to make it fully automatic. We introduced a basic object inlining analysis and optimization in [19] and presented a more extensive evaluation of it in [20] Here we present ....
Z. Budimlic and K. Kennedy. Optimizing java: Theory and practice. Concurrency: Practice and Experience, 9(6), June 1997.
.... this double dvar1, int var2) direct call TurboJfoophoo(hvar0, dvar1 (double) var2) but if a direct call was not possible, then something roughly like this: double dvar3 = dvar1 (double) var2; reformat the argument tmp.v = dvar3; args[1] i = tmp.a[0] args[2].i = tmp.a[1] obtain info about method phoo from method table methodinfo = methodtable( callJavaMethod(args[0] h, methodinfo, args) Figure 2: Example: Generated Interlude and C File 118 a special C routine we call a trampoline. The trampoline queries the JVM to find out the ....
....compiler assisted garbage collection is an obvious example. However, there are also drawbacks. Adapting TurboJ to work with Tornado for Java (under VxWorks) involved relatively few changes, since the key issues of garbage collection and thread management are delegated to the JVM. Object inlining[2] is one JVM neutral optimization that can reduce the overhead of object management. Budimlic and Kennedy implemented this as a bytecode to bytecode optimization; this lead to certain protection difficulties that they had to work around. We note that these problems simply don t arise for a ....
Budimlic, Z., and Kennedy, K. Optimizing Java: Theory and practice. Concurrency: Practice and Experience (June 1997). http://www.npac.syr.edu/projects/javaforcse/cpande/rice/JavaPaper.ps.
....method, is created. This method speci es when a computational component s state should be saved and triggers the remote agent whenever this condition is true. ActionS i is created based on simple data analysis techniques and can be overwritten by the programmer. Work on optimizing Java compilers [15, 12] utilize signi cantly more powerful analysis techniques than those we currently use, and we hope to borrow some design and implementation from their research to enhance our functionality. All objects are loaded on demand across the network by the remote agent, transparently to the worker. Figure 2 ....
Z. Budlimic and K. Kennedy. Optimizing Java: Theory and Practice. Concurrency - Practice and Experience, 9(6):445-464, June 1997.
....The Syracuse common runtime also supports an older subset HPF system [61] has a user level C interface, and is being used as the basis of a new HPJava translator. Rochester [31, 34] and Indiana [13, 14, 17, 16] are also developing Java compilers. Rice is working on Java compiler optimizations [19]. 2.9 Java and SPMD programming A significant new task in the revised statement of work submitted in July 97 was the proposal to provide an infrastructure supporting high level SPMD programming practice. This will be a valuable by product of the project. Beyond its role as a target for parallel ....
....resulting specification is a better match to the performance and portability requirements of HPC runtime systems than the more generic MPI standard. 10 Rice University Rice have contributed through the runtime for Fortran 77D [30] They have also been working on optimization of Java programs [19] and have advised on associated runtime requirements. A Deliverable Software We intend to distribute the collected papers and software from the project as a CD ROM. There are several software packages currently available at NPAC through the PCRC home page: http: www.npac.syr.edu projects pcrc ....
Zoran Budimlic and Ken Kennedy. Optimizing Java---theory and practice. Concurrency: Practice and Experience, 9(6):445, 1997.
....work needs to explore these and other techniques such as expression templates [6] 2. Compiler changes. We noted in Section 4 several desirable optimizations that javac does not perform. Much work remains to be done here to develop better compilation techniques for Java. Budimlic and Kennedy [9] are exploring such optimizations using object inlining techniques. 3. Just In Time compilation. Current JIT compilers are in their early version, and have not been heavily optimized. As we discussed in Section 4, some do not take advantage of machine specific optimizations and do not appear to ....
Z. Budimlic and K. Kennedy. Optimizing Java: Theory and practice. Concurrency: Practice and Experience, 9(6):445--463, June 1997.
....the simple, graph algorithm based analysis system of the Emerald compiler was sufficient only to allow the inlining of (boxed) immediate types. Immediate types in Emerald posed fewer analysis challenges for they had by definition the value semantics required for inlining. Budimlic and Kennedy [4] sketch a combined object and method inlining optimization which they call object inlining. In their scheme, for an object created within a method, all its called methods are inlined and the state of the object replaced with local variables. Our inter procedural 11 This is also why Concert is ....
Zoran Budimlic and Ken Kennedy. Optimizing java: Theory and practice. Concurrency: Practice and Experience, 9(6), June 1997.
....and can produce more exact knowledge on control and data flow. Therefore, traditional optimization techniques, as for example code and object inlining, dispatch optimization, register allocation, etc. can be applied more often and presumably with more effect. As Budimlic and Kennedy stress in [2] the only serious difficulty is that Java s elaborate exception framework interferes with some optimization. 1 Given that assumption and given the results of a recent study by Veldhuizen and Jernigan [16] who benchmarked Kuck and Associates C compiler KAI C and demonstrated that KAI C can ....
Z. Budimlic and K. Kennedy. Optimizing Java: Theory and practice. Concurrency: Practice and Experience, 9(6):445--463, 1997.
....in parallel. Finally, some features in modern computer languages inhibit general compiler optimizations, including those used for parallelism. For instance, language features such as exceptions and dynamic method binding in languages like Java and C cause problems for optimizing compilers [9]. The problems with exceptions appear in the javar and javab projects, neither of which preserves sequential semantics with respect to exceptions. javar performs source code translation on Java code to parallelize loops regardless of any exceptions that may be thrown. However, if the code within a ....
Z. Budimlic and K. Kennedy. Optimizing Java: Theory and practice. Concurrency: Practice and Experience, 9(6):445--463, 1997.
....approach. 2 Compiler Techniques Used by JaMake In order to allow easier reading of the remainder of this paper, we will in this section brie y describe some of the advanced compiler techniques used in the JaMake compilers. The complete description of these techniques can be found elsewhere [4, 3]. Class specialization clones a class containing polymorphic elds based on the possible subtypes of those elds. It generates several specialized versions of the original class, exposing the subtype distinctions in the revised class hierarchy [5, 9] The specialized classes are monomorphic with ....
....components that require the knowledge of multiple data structures. For implementation simplicity, most of the transformations in the JaMake compiler operate on data structures that are stored on the disk in the intermediate form. For example, object inlining and class specialization [4, 5] read the source code from the disk, create the abstract syntax trees (AST s) transform the AST s and then generate the source code again. This technique eliminates many dependencies and incompatibilities (due to di erent origins) between the di erent components of the infrastructure and greatly ....
[Article contains additional citation context not shown here]
Z. Budimlic and K. Kennedy, Optimizing Java: Theory and practice, Concurrency: Practice and Experience, 9 (1997), pp. 445-463.
....community. Three main reasons for Java programs not to achieve high performance by comparison with Fortran and C are: Java compilers and execution environments are not yet on par with the traditional optimizing compilers. Although there has been a significant advancement in this area lately [18, 37, 38], especially with run time compilation and optimization techniques [67, 3, 2] Java systems still have to incorporate many optimizations to be able to compete with the traditional compilers. The non object oriented features of Java add significant overhead. Bytecode portability requires that ....
....compilation of highperformance scientific programs written in Java rather than on common, everyday programs. It also exploit the impact the almost whole program optimization framework has on applicability of their techniques. Object inlining was introduced simultaneously by Budimlic and Kennedy [18, 19] and Dolby and Chien [38, 39] Both these research groups present a similar idea: inlining whole objects to eliminate indirection and improve the performance of the generated code. There are some major differences, however. Dolby and Chien focus only on whole program optimization of C programs. ....
[Article contains additional citation context not shown here]
Zoran Budimlic and Ken Kennedy. Optimizing Java: Theory and practice. Concurrency: Practice and Experience, 9(6):445--463, June 1997.
....and C. There are three main reasons why Java programs do not achieve high performance by comparison with Fortran and C: Java compilers and execution environments are not yet on par with the traditional optimizing compilers. Although there has been a significant advancement in this area lately [2, 7, 9], especially with the run time compilation and optimization techniques, Java systems still have to improve to be able to compete with the traditional languages. The non object oriented features of Java add significant overhead. Bytecode portability requires that major optimizations be delayed ....
....A Preliminary Study 13 of 15 very similar to the Matrix hierarchy in OwlPack. The real challenge is to improve on these techniques so they can be applied in Java environment without sacrificing the portability and security of the Java VM. 5. 0 Related and Future Work Dongarra et al. [2, 3, 10] are currently working on automatic translation from Fortran to Java and applying it to LAPACK library. While this is an attractive way to quickly transform existing high performance Fortran codes into Java and obtain reasonable efficiency (as demonstrated in this paper) the resulting code would ....
[Article contains additional citation context not shown here]
Z. Budimlic and K. Kennedy. Optimizing Java: theory and practice. Concurrency: Practice and Experience 9(6), 445-463, 1997.
.... on the Java VM bytecodes, requires that important # This work is sponsored by the Center for Research on Parallel Computation Center for Research on Parallel Computation, Rice University Prospects for Scientific Computing in Polymorphic, OO Style 2 optimizations be delayed until run time [2]. Garbage collection, synchronization, and the exception mechanism all require additional overhead for their implementation. The Java security model requires the Java VM implementation to examine the code for security holes before execution. All these requirements, important as they are, reduce ....
....with certain limitations when compared to whole program compilation [11, 6] The generated code is fully portable and verifiable Java bytecode, in JAR archive form. Class specialization is an optimization where class is specialized based on the exact type of the polymorphic data it contains [2, 7, 10]. Several specialized versions of the original class are generated, e#ectively pushing the type distinction upwards in the class hierarchy. Object inlining is an optimization in which whole objects that are contained inside a given class are inlined and replaced with the more primitive data that ....
[Article contains additional citation context not shown here]
Z. Budimlic and K. Kennedy, Optimizing Java: Theory and practice, Concurrency: Practice and Experience, 9(6) (1997), pp. 445--463.
No context found.
Z. Budimlic and K. Kennedy. Optimizing Java: Theory and practice. Concurrency: Practice and Experience, 9#6#:445#463, June 1997.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC