I am working with Prof. David
I. August in Liberty Research
Group on compiler optimization techniques for multi-core
architecture. My research interest includes parallel compiler
optimization, programming language and artificial intelligence. I am
currently working on multithreaded program analysis for optimization
Upcoming Paper Deadlines
- PPoPP Abstract July 10, 2009
- CGO Sep, 2009
Recent Readings
- Foundations of the C++ Concurrency Memory Model, H.J. Boehm, S. Adve
- Pointer Analysis for Multithreaded Program, R. Rugina, M. Rinard
- Context-Sensitive Interprocedural Points-to Analysis in the
Presence of Function Pointers, M. Emami, R. Ghyiya, L. Hendren, 1994
- Graph Algorithm (Bedside story book)
Publications
-
Revisiting Sequential Programming Model for the Multi-core
Era(PDF),
M. bridges, N. Vachharajani, Y. Zhang, T. Jablin,
D. I. August, IEEE Micro, January 2008
(IEEE Micro's "Top Picks" special issue for papers "most relevant to
industry and significant in contribution to the field of computer
architecture" in 2007.)
- Revisiting Sequential Programming Model for the Multi-core(PDF),
M. bridges, N. Vachharajani, Y. Zhang, T. Jablin,
D. I. August, Proceedings of the 40th IEEE/ACM International Symposium on Microarchitecture (MICRO), December 2007
- Runtime Empirical Selection of Loop Schedulers on
Hyperthreaded
SMPs(PDF), Y. Zhang,
M. Voss, Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium, April 2005
- An Adaptive OpenMP Loop Scheduler for Hyperthreaded
SMPs(PDF), Y. Zhang, M. Burcea, V. Cheng, R. Ho, M.
Voss, Proceedings of the 17th International Conference for Parallel and Distributed Computing Systems, September 2004
Talks and Presentations
- My talk slides on alias analysis using separation logic in my generals exam (qualification exam in Princeton) can be
found here
-
Research Links
Crazy Research Ideas
Here I am listing a couple of not yet matured researched ideas and
crazy thoughts that I
may be interested to step in later. If you have any thoughts or ideas
or suggestion, please contact with me ~
- On demand pointer analysis? We are spending lots of efforts on
pointer analysis these days. Context/Flow sensitive analysis is
still not practical. Shall we simply abandon the current pointer
memory management system or shall we look for on demand pointer
analysis? First we figure out which pointers are important then we
spend lots of time on that instead of analyzing every pointer
extensively.
- How about passing high level type information down to low level
pointer analysis to achieve both accurancy and optimal order of
optimization?
- Why is there a huge gap between fp and int programs? what are
fundamentally preventing general purpose programs to execute as fast
as scientific applications?
- Is there a universal way to measure dynamic optimization
efficiency? When we cannot find anything statically, we always want
to go online. But how do we know whether online optimization is
gonna work as we think? How do we know whether the price we pay pays
us back? Is there a framework that we can employ to prevent us from
doing the wrong thing at the very beginning?
- What are the domain specific language mean? How do we categorize
domains and know how to get parallelism?
- Since we have machines with 100,000 processors, why do we want to
do speculation? We can just throw two or more versions there and
pick the right one later. We dont know how to use those idling 99,
999 processors anyway. This leads to a fundamental question: do we
want to do things 100% correctly at the beginning, or do we allow us
to make some tolerable mistakes and being able to fix it at a very
low cost?