The compiler community has developed a lot of sophisticated technology for analyzing and restructuring programs to optimize computations, enhance data locality, parallelize execution etc. This technology is now routinely used in production compilers for languages like FORTRAN and C - for example, the latest release of SGI's MIPSPro compiler performs locality enhancement using data shackling, a restructuring technique developed two years ago at Cornell.
This semester, we will investigate the use of these techniques to enhance the performance of Java programs. This is a non-trivial problem because Java has threads, so transformations must not violate the memory consistency model; even in sequential Java programs, precise exceptions constrain optimizations. Nevertheless, the outlook is promising; for example, recent work at IBM has boosted the performance of some Java codes from 5 MFlops (JIT-compiled code) to 500MFlops (offline-compiled) on a RS6000/SMP.
The first half of the course will consist of lectures in which we will summarize the state of the art in analysis and restructuring techniques. The second half of the course will consist of paper and project presentations from students. Some of the papers we will read can be found in the Java Grande web-pages (http://www.javagrande.org/).