The following list contains project proposals from which you can
choose. To access them, you will need login credentials that I will
hand out in class. You can also create your own project. In that case,
you will need to write a proposal in a similar format as the pre-made
proposals and run it by me before the project selection deadline.
You can work in groups or on your own. I do
not recommend groups of more than three, as this promotes slacking. If
your group contains more than one person you will need to specify what
each person will do for the project. It's okay if different
work on the same project.
Managing Memory Latency on NUMA Systems
Memory Latencies on NUMA Systems
Memory Migration Strategies on NUMA Systems
Memory Access Patterns for NUMA Optimizations
Energy-Efficient and Asymmetric
of Performance and Energy Consumption of Real Applications on
Contention Management in
Cluster, Cloud and in Virtual Systems
Search of Contention-Descriptive Metrics in High-Performance Computing
Comparison of Scientific Applications in High-Performance Computing
Clusters vs. Amazon Elastic Cloud
Stability in Web Services on Multicore Processors
Final project is one of the real perks of this course. My
strategy with respect to final projects is designed to help you carry
out a complete piece of independent research, from start to end, and publish
workshop or a conference.
This class has a successful track records of producing
publications. In 2007 (the first time this class was taught) two out of
four project groups published their papers at the WIOSCA workshop --
this is a peer-reviewed workshop that deals with issues of operating
systems on multicore processors. In 2008, four out of six groups
published their final project papers. That year, the students travelled
to China (all expenses paid via travel scholarships) to present their
work. During the summer of 2008, many students continued working on
research and prepared conference and journal papers. Here is a complete
list of papers that originated from this course:
Alexandra Fedorova, Viren Kumar,
Vahid Kazempour, Suprio Ray, and Pouya Alagheband, Cypress: A
Scheduling Infrastructure for a Many-Core Hypervisor , in Proceedings
Managed Multi-Core Systems (MMCS'08) held in conjunction with the
17th International Symposium on High Performance Distributed Computing
(HPDC-17), 2008. (pdf)
Andrea Tagliasacchi, Ryan
Dickie, Alex Couture-Beil, Micah J. Best, Alexandra Fedorova, and
Andrew Brownsword, Cascade: A Parallel Programming Framework for
Video Game Engines, in Proceedings of the Workshop on Parallel
Execution of Sequential Programs on Multi-core
Architectures (PESPMA), in conjunction with ISCA, Beijing, China,
Bo Chen, William Pak Tun Ma, Yan
Tan, Alexandra Fedorova and Greg Mori, GreenRT: A Framework for the
Design of Power-Aware Soft Real-Time Applications, in Proceedings
the Interaction between Operating Systems and
Computer Architecture, in conjunction with ISCA-35, Beijing, China,
Daniel Shelepov, Juan Carlos
Saez, Stacey Jeffery, Alexandra Fedorova, Nestor Perez, Zhi Feng Huang,
Sergey Blagodurov, Viren Kumar, HASS: A Scheduler for Heterogeneous
Multicore Systems, in Operating Systems Review, vol. 43, issue
2, (Special Issue on the Interaction among the OS, Compilers, and
Multicore Processors), pp. 66-75, April 2009. (pdf)
Micah J Best, Alexandra
Fedorova, Ryan Dickie, Andrea Tagliasacchi, Alex
Couture-Beil, Craig Mustard, Shane Mottishaw Aron Brown, Zhi Feng
Xiaoyuan Xu, Nasser Ghazali and Andrew Brownsword, Searching for
Concurrent Design Patterns in Video Games: Practical lessons in
achieving parallelism in a video game engine, to appear in Proceedings
European Conference on Parallel and
Distributed Computing (Euro-Par 2009), August 2009. (33% acceptance
Sergey Zhuravlev, Sergey
Blagodurov and Alexandra Fedorova, Addressing Shared Resource
Contention in Multicore Processors via Scheduling, in Proceedings
Conference on Architectural Support for
Programming Languages and Operating Systems (ASPLOS 2010).
Acceptance rate 18.6%.(pdf)
James Charles, Preet Jassi,
Ananth Narayan S, Abbas Sadat and Alexandra Fedorova, Evaluation of
the Intel Core i7
Turbo Boost feature, In Proceedings of the IEEE International
Symposium on Workload Characterization, October 2009 (pdf)
Jon Hourd, Chaofei Fan, Jiasi
Zeng, Qiang (Scott) Zhang, Micah J Best, Alexandra Fedorova and Craig
Mustard, Exploring Practical Benefits of Asymmetric Multicore
Processors", In Proceedings of the 2009 Workshop on Parallel
Execution of Sequential Programs on Multi-core Architectures, in
conjunction with ISCA-36. (pdf)
Although doing an independent research project seems
challenging at first, fear not! I have experience in guiding students
throughout the entire process, from the inception of the project topic
to writing up the final results, so if you are willing to put time and
energy into it, you will do well.
I will now describe the process involved in completing the
Choosing the topic
Choosing a good topic for the project is half the work.
Choosing a topic involves:
Specifying the problem you will solve, or the question you
will attempt to answer.
Motivating the problem: Who will care about the findings of
your project and why?
Outlining your methodology:
How will you approach the problem?
What steps will you take?
Do you have the necessary tools and infrastructure?
Is this doable within the allotted timeframe?
Outlining the format of results:
What data will you show to convince the reader that you
either solved the problem or answered the question?
If you saw that data yourself, would you be
The more work you do when selecting the project's topic, the
more successful you will be.
A good part is that in many cases, the work of choosing the
topic and methodology will already be done for you. On this web site
you will find references to several pre-packaged project ideas that you
may choose to work on. Some of them will be very well specified:
complete with step-by-step methodology and the format of final results.
For these cases, completing a project will be not much different than
completing a challenging project assignment for an undergraduate
course. Other projects will be less well specified: they will give a
problem and a motivation, but only some hints at the methodology.
Finally, there is always an option to design a completely new
project. In that case, I will work with you to formulate the problem,
think about the motivation, flush out the methodology and present the
We have rich computing infrastructure available for final
projects (see "Machines" section of the web site). In addition, if you
want to do architectural research, we have Simics hardware simulator
installed, with several pre-made configurations. Chances are, you will
find what you need for your final project. In any circumstance, before
you begin the work, you must think very carefully about what hardware
and software you will need and confirm with me that you will be able to
As expected, all computing infrastructure will be shared among
the students. Most of the machines we have belong to my research group,
so you will only be sharing them with a few grad students, not the
entire department. Nevertheless, sharing implies that you will need to
reserve time on machines (we do this via a Google calendar), and that
you will need to be wise about planning your time.
Working with a partner
I highly recommend working with a partner. Several people can
achieve more when they work together as a team. If you look at systems
papers, you will see that almost all of them have several authors
(unlike theory papers). That is because systems work is very time
consuming, so it pays to work in a group.
That said, a poor partnership can be deadly to the project.
So choose your partner wisely. Make sure that you and your partner have
similar work ethics, compatible schedules, and that you will be able to
get along. I'd say that working with a bad partner is worse than
working on your own. So use your judgement.
One of the most difficult aspects of working independently is
that you have to motivate yourself to make progress. There will be
nobody standing behind your back and pushing you to do the work. To act
as a "pusher", I'd be happy to set up regular meetings with you and
your project group to discuss your progress, if that will help you stay
Writing up your results
Writing is hard. It is not an easy task to write a good
technical paper. Definitely not something your should do the night
before it is due. Start writing early. You can already write
introduction and motivation after you've chosen the project. You can
write the methodology section once you've settled on the methodology.
In fact, writing things down before doing them will help you come up
with a better plan. Writing sharpen the thinking process, because you
are forced to present things clearly and logically for the sake of them
being understood by others. Here is a very good
article on writing.
Conference and workshop submission
The due date for your project will roughly correspond with
submission due dates for several conferences and workshops on multicore
If you are interested in submitting your paper to any of
these or other workshops or conferences, it's a good idea to let me
know early, so I can help you plan your time accordigly.