CMU 15-869
Course Project Information
Goals
The goal of course projects is to give students the opportunity to
gain hands on research experience in graphics systems. Working
individually or in teams, you are expected to identify and investigate
a current challenge in high-performance graphics system design.
(Note: valid projects topics include both improvements to graphics
systems and research related to algorithms/applications that stand to
influence the design of these systems.) You will need to become
familiar with recent literature relevant to your topic, propose a plan
of work that (ideally) will contribute to the state of the art, and
then describe your work via a conference-style write-up as well as a
in a presentation to the class. The hope is that the best projects
begin a line of research that can be further pursued toward eventual
conference submission.
Deadlines and Deliverables
- Friday Oct 7th: Project Proposal.
(3-4 page document) Please describe your project plans by addressing
the following issues:
- A brief description of the project. This description should
include a summary of the problem you are trying to solve, what
you will do, and as well as the potential impact of success
(e.g., what will we understand that we didn't know before). I'd
like you to split your "what I will do" section into two parts, a
section for (1) "what I must get done", and a section for (2)
"what I'd like to get done if things go really well". Please
also include an argument for why this project relates to 15-869
course material.
-
If this is a group project, please describe your plan for
partitioning work amongst the team.
- As is often the case in research projects, it can be hard to
predict how long certain tasks will take. However, keeping a
schedule, and keeping it updated as the project proceeds, is still
a good way to give yourself a global view of your project. Provide
a schedule of what you hope to have done at the two intermediate
project checkpoints (see dates below). Keep in mind the breakdown
between "what I must do" and "what I hope to do if things go really
well".
- Provide a brief outline of your expected final writeup. This
outline might include a list of papers constituting related work
and a list of experiments you hope to run (or demos you hope to
give).
-
List resources you require to be successful (including systems
you already have access to).
-
Friday Oct 14th: Literature Survey.
(2-3 pages + bibliography). Please provide a summary of relevant
work in the field. A good literature survey focuses not on the
details of what previous reseachers did, but how these previous
approaches relate to your proposal. How is your approach different
than previous approaches? Can previous work be taxonomized, lending
to a simpler description of how your work fits in?
-
Friday Oct 28th: Checkpoint 1. (4-5
page design document + 1-2 page schedule update). Please provide a
technical write-up descriping how your system/algorithms work. From
this document I should be able to understand exactly what you are
building. In addition, please provide a 1-2 page update of your
project schedule. This update should indicate what items were
completed successfully, and how the last 6 weeks of the project have
changed.
-
Friday Nov 18th: Checkpoint 2. (1-2 page
schedule update). Please provide another schedule update
summarizing project progress. If applicable, initial results would
be interesting to see at this time.
- Friday Dec 16th: Final project
Presentation. 15 minute talk to class. Held during class exam slot.
- Sunday Dec 18th, 11:59 PM: Final Project
Report. (~10 page paper). Your final project report is
expected to read much like a conference paper. It should include a
description of related work (with bibiography), project goals, the
methods used or system built, your experimental setup, results/key
findings, and potential future work.
Interesting Resources
- NVIDIA's
software rasterizer. (implemented in CUDA) Full source is
available on Google Code. This is one of the fastest software
rasterization-based pipelines available and would be a good starting
point for experimental pipeline modification projects. The code is described in the High Performance Graphics 2011 paper High-Performance Software Rasterization on GPUs (Laine et al.)
- Intel SPMD Program Compiler.
This open source compiler available from Intel is very much like a
shader compiler. It takes as impact sequential code in a C-like
language, and generates optimized vector instruction streams as
output.
- NVIDIA Tegra Development Kits. If we ask nicely support from NVIDIA may be possible.
- Conference Proceedings. You may wish to peruse the proceedings of
conferences such as SIGGRAPH, Graphics Hardware (up until 2009), High
Performance Graphics (2009 and later), or the IEEE Symposium on
Interactive Ray Tracing (2008, 2009)
- Class slides on project ideas.