CS612: Software Design for High-performance Architectures

Instructors:

Keshav Pingali ( pingali@cs.cornell.edu) Rhodes 457
Paul Stodghill ( stodghil@cs.cornell.edu) Rhodes 496

Time:

Tuesdays & Thursdays, 10:10 - 11:25 AM, Upson 207

Prerequisites:

An undergraduate compiler course (like CS412) is helpful but not required. Programming experience is essential.

Course material:

Lectures notes and papers will be placed in the course home page (http://www.cs.cornell.edu/Info/Courses/Current/CS612).

Course content:

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/).

Course work:

There are three main requirements in 612. Sometime in the second week of the course, we will hand out a set of papers that we will read during the course. Students will be divided into teams, and each team will read, discuss and present a set of related papers in the second half of the course. The second requirement is a final project. A list of potential projects will be handed out early in the course, but you are free to come up with your own project as long it is broadly concerned with either high-performance computing or Java (preferably, both!). The third requirement is class participation. You are expected to attend classes, read papers ahead of time, and participate enthusiastically in class.
Paul Stodghill
Last modified: Tue Jan 26 15:01:38 EST 1999