Final Projects

Potential projects

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 groups work on the same project.

Managing Memory Latency on NUMA Systems
  1. Understanding How To Reduce Memory Latencies on NUMA Systems
  2. Comparison of Different Memory Migration Strategies on NUMA Systems
  3. Locality-Aware Data Structures
  4. Discovering Memory Access Patterns for NUMA Optimizations

Energy-Efficient and Asymmetric Systems
  1. Characterization of Performance and Energy Consumption of Real Applications on Asymmetric Systems

Contention Management in Cluster, Cloud and in Virtual Systems
  1. In Search of Contention-Descriptive Metrics in High-Performance Computing Cluster Environments
  2. Performance Comparison of Scientific Applications in High-Performance Computing Clusters vs. Amazon Elastic Cloud
  3. Performance Stability in Web Services on Multicore Processors

Parallel Computing

Project assignment

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 it in a refereed 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 of the Workshop on 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, 2008. (pdf)

    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 of the Workshop on the Interaction between Operating Systems and Computer Architecture, in conjunction with ISCA-35, Beijing, China, 2008. (pdf)

    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 Huang, 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 of the 15th International European Conference on Parallel and Distributed Computing (Euro-Par 2009), August 2009. (33% acceptance rate) (pdf)

    Sergey Zhuravlev, Sergey Blagodurov and Alexandra Fedorova, Addressing Shared Resource Contention in Multicore Processors via Scheduling, in Proceedings of the Fifteenth International 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 project.

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 convinced?
  • 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 results.

    The infrastructure

    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 access it.

    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.

    Making progress

    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 on track.

    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 computing:

    • TBA

    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.

    © Copyright 2007 Simon Fraser University