Below is a by no means complete list of project proposals for UCB CS265 (Advanced Compiler Implementation) and UCB CS267 (Applications of Parallel Computers). Needless to say, we are open to other proposals and possibilities.
| CS265 | CS267 |
|---|---|
| Alternate backends. Currently, Sather/pSather compilation goes through gcc. Writing a native Sather backend or adapting one of the existing backends (such as lcc ) would speed up compilation and provide further opportunities for optimizations. Another attractive alternative is to compile Sather into Java virtual machine code. This is especially attractive as it would give access to all Java libraries and provide portability. | The pSather application suit development. We currently have pSather versions of some of the Splash programs (a Stanford benchmark for shared memory architectures). We are interested in having pSather equivalences of most applications. Another goal is to identify common design features that could be implemented using distributed libraries. We are also interested in other pSather applications from different domains. |
| Optimization studies. A fair number of compiler optimizations has been implemented for the Sather/pSather compiler (function inlining, a range of iterator optimizations, hoisting of loop invariant expressions and other forms of code motion, CSE, etc.) Lots of statistics could be found here and here . However, very little investigation of interaction among various optimizations has been done. | Distributed pSather libraries We are interested in developing a combination of distributed and shared memory pSather libraries for conventional NOWs, clusters of SMPs, and other distributed-memory multiprocessors. The library will include distributed stacks, queues, hash tables, sets, lists, trees, etc. A related issue is developing of multi-purpose load balancing classes. Click here for information on related Multipole project. |
| New optimizations A range of new optimizations can prove beneficial for the Sather/pSather compiler. Below is an incomplete list of some: | pSather optimizations The same as for cs265 plus various software caching, prefetching, and object migration optimizations. |
| "Intelligent" libraries . A combination of compiler/runtime/library techniques to provide for optimal representation of data structures at runtime. This would include swapping data structures at runtime if an alternative representation is more efficient. | The same as for cs265, but in the presence of parallelism. The effects could be even more significant than for serial Sather. |
| Locality . Developing data structures and compilation techniques to exploit object locality at different levels. | The same as for cs265. Locality issues become crucially important in distributed systems with high penalties for bad data placement. |
| Other possibilities.
| Other possibilities.
|