|Date||Speaker||Title (click for abstract)||Location|
|Sept. 27, 2006||Nomair Naeem||Programmer-Friendly Decompiled Java||DC 3314|
|Oct. 11, 2006||Ghulam Lashari||Control Flow Virtualization for General-Purpose Computation on Graphics Hardware||DC 3314|
|Oct. 25, 2006||Mike Chase||On the Near-Optimality of List Scheduling Heuristics for Local and Global Instruction Scheduling||DC 3314|
|Nov. 03, 2006 at 1:00-2:00pm||Peter Thiemann||A Type-Based Program Analysis Framework for Linear and Affine Resources||EIT 3142|
|Nov. 08, 2006||Gordon Cormack||MABEL: A Beginner's Programming Language||DC 3314|
|Nov. 22, 2006||Ben Korvemaker||Run-time Code Replacement||DC 3314|
|Nov. 29, 2006||Stephen Curial||TBA||DC 3314|
Seminars are Wednesdays at 3:00 pm, unless otherwise indicated.
All are welcome.
Talk announcements are also posted to a public mailing list.
To volunteer to give a talk, contact Ondřej Lhoták. Talks can range from informal to formal, and they can be about any of the following:
The purpose is for us all to see what people are interested in, and motivate discussions.
List scheduling is generally regarded as being near-optimal in practice, provided a good choice of heuristic is used. However, previous work comparing a list scheduler against an optimal scheduler either makes the assumption that an idealized architectural model is being used or uses too few test cases to strongly prove or disprove the assumed near-optimality of list scheduling. It remains an open question whether or not list scheduling performs well when scheduling for a realistic architectural model.
Using constraint programming, we developed an efficient optimal scheduler capable of scheduling even very large blocks within a popular benchmark suite in a reasonable amount of time. I improved the architectural model and optimal scheduler by allowing for an issue width not equal to the number of functional units, instructions that monopolize the processor for one cycle, and non-fully pipelined instructions. I then evaluate the performance of list scheduling for this more realistic architectural model.
I found that when scheduling for basic blocks when using a realistic
architectural model, only 6% or less of schedules produced by a list
scheduler are non-optimal, but when scheduling for superblocks, at least
40% of schedules produced by a list scheduler are non-optimal.
Furthermore, when the list scheduler and optimal scheduler differed, the
optimal scheduler was able to improve schedule cost by at least 5% on
average, realizing maximum improvements of 82%. This suggests that list
scheduling is only a viable solution in practice when scheduling basic
blocks. When scheduling superblocks, the advantage of using a list
scheduler is its speed, not the quality of schedules produced, and other
alternatives to list scheduling should be considered.
A Type-Based Program Analysis Framework for Linear and Affine Resources
Nov. 03, 2006
Java(X) is a framework for type-based program analysis for Java. Java(X) augments Java's type language with annotations drawn from an algebra X, polymorphism, and structural subtyping in terms of the annotations.
The main innovation of Java(X) is its concept of activity annotations.
An activity annotation enhances a classical value flow annotation with
linear propagation, which facilitates strong updates. Thus Java(X)
can perform protocol checking as well as refinement typing with high
accuracy. Aliasing is addressed with a novel splitting relation on
MABEL: A Beginner's Programming Language
Nov. 08, 2006
I will present an informal description of MABEL -- a programming language designed in 1976. I will present the language design and implementation in terms of design principles and technologies then and now.
Audience members wishing to prepare rotten tomatoes
and the like my find raw material here:
Run-time Code Replacement
Nov. 22, 2006
Patching programs at run-time allows software to be updated without requiring a restart of the running program. Long-running programs and services that must maintain high-availability both benefit from run-time code replacement. This talk will cover the progress of run-time patching over the last 30 years, and how previous work relates to the problem of run-time code replacement in multi-threaded programs.