15-745 Optimizing Compilers
The Readings, and How to Lead an In-class Discussion
For most of the second half of the semester, we will have what amounts to a graduate reading seminar. Each week there will be several contemporary research papers (with perhaps a couple of "classic" papers here and there), with one student selected (in advance) to lead an in-class discussion. All students are required to read all papers, and ideally to do so on the assigned schedule.
There are several motivations for in-class discussions. The most basic reason is to expose you to the state-of-the-art in compiler optimization, including the most recent developments in both industry and academia. The basic hardware technology changes rapidly, which means the actual engineering tradeoffs and concepts also change, sometimes significantly. By reading some of the most important papers in various major research thrusts, you gain some ability to understand what are the long-lasting principles, and what are more transient. It might also happen that some of the ideas in these papers might give you some guidance on your projects in this course.
With these goals in mind, here are some tips on how to lead a successful discussion:
- Don't assume that your audience has read the papers. I encourage everyone to read all of the papers before the class meets, but there might be too many for everyone to read all of them in detail. Hence, your talk must be self-contained, meaning that you must provide whatever background is necessary for your discussion.
- A picture is worth a thousand words! Create slides or make good use of the blackboard, in order to communicate your ideas quickly and clearly. You probably do not have time for more than 8-12 slides. You may want to create backup slides related to questions that you might ask, but that is optional.
- Do not attempt to present the full content of the papers. There simply will not be enough time. Distill the papers down to their key ideas and results.
- Be careful about time. Thirty minutes is not much time, especially since we want a large chunk of that time to be devoted to discussion. I would suggest that you time your presentation to make sure that you can fit it within a reasonably short period of time. Make sure that you leave at least 5-10 minutes for discussion. If you can organize your entire session as an interactive discussion or problem-solving activity, that is even better.
- Don't just accept all of the statements in these papers at face value. Do you agree with the authors? Do their results really support their conclusions, or are there other interpretations or opposing views? In particular, is there a good reason to believe that the conclusions will still hold for applications other than the ones in the given study?
- Your mission is to provoke a thoughtful discussion about your topic. Come prepared with a list of thought-provoking questions to pose to the audience.
- At some point in the discussion (perhaps near the end), you should present what you consider to be interesting open research questions related to your topic. These are not necessarily just suggestions for class projects (the scope can be much larger than that), although they might help people think about interesting problems to address.
- Within a week after leading a discussion, you should submit a brief hardcopy writeup summarizing what was covered during your session. These writeups will be copied and distributed to the class. They should include your slides, plus any additional material that you would like to add.
The Reading List
- Memory and cache optimizations
- Register allocation
- IA-64 and beyond
- Zahir, Morris, and Hess. OS and compiler considerations in the design of the IA-64 architecture. ASPLOS'00.[April 18, udekel]
- Mahlke, Hank, McCormick, August, and Hwu. A comparison of full and partial predicated execution support for ILP processors. ISCA'95.[April 18, mtschant]
- Burger, Keckler, McKinley, Dahlin, John, Lin, Moore, Burrill, McDonald, Yoder, et al. Scaling to the end of silicon with EDGE architectures. IEEE Computer, 2004. [April 25, kbe,slides]
- Swanson, Michelson, Schwerin, and Oskin. WaveScalar. MICRO'03.[April 25, bhm,slides]
- Budiu, Venkataramani, Chelcea, and Goldstein. Spatial computation. ASPLOS'04.[April 25, rweba]
- Pointer analysis
- Dynamic optimizations
- Grant, Philipose, Mock, Chambers, and Eggers. An evaluation of staged run-time optimizations in DyC. PLDI'99. [April 28, lahiatt,slides]
- Lee and Leone. Optimizing ML with run-time code generation. PLDI'96.[May 2, dabraham]
- Arnold, Fink, Grove, Hind, and Sweeney. Adaptive optimization in the Jalapeno JVM. OOPSLA'00.[May 2, acove,slides]
- Advanced languages