Final Project Proposals
Deliverables
The proposal will be due at 11:59 PM Monday October 27.
Note that we will be reviewing proposals on a rolling basis so please submit this on time, so you can hear back as early as possible.
Overview
Now that we’ve wrapped up the required lab assignments for the semester, we’ve set aside these last several weeks of 6.S894 for you to work on either the advanced labs or an open-ended project on a topic of your choice. If you wish, this final project is meant to give you an opportunity to exercise what you’ve learned, to learn more about topics we didn’t have a chance to cover deeply in the labs, and to get a better sense of what software engineering for GPUs and other accelerators looks like in the real world. We’re hoping that for students who come into the class with a concrete vision of what they want to work on, this final project allows them to explore that vision.
The first step of doing a final project rather than the advanced labs (which is what we expect most students will pursue and thus will be the default option) is to submit a final project proposal, which we will be reviewing for feasibility and technical depth. In terms of logistical details, the final project will consist of:
-
Teams:
-
By default, students should plan to complete final projects in teams of 2 people. If you have particular reason to form a differently-sized team, we will consider proposals for 1, 3, or 4 people on a case-by-case basis.
-
We’ll expect larger teams to take on somewhat more ambitious projects than smaller teams. A good heuristic is that since we have set aside around 5 weeks for the final project, each team member should expect to put in around 5 times the work of a typical lab assignment.
-
-
Topic Selection:
-
Every team gets to choose their own topic to work on. You’re welcome to propose any final project topic you like related to accelerated computing, but your topic should be significantly more challenging than a lab assignment.
-
Project topics should be challenging, but not (necessarily) novel. A final project focused on reimplementing something which already exists is totally okay.
-
There will be a lightweight topic proposal and approval process, and we’ll try to work through all the proposals during the timeframe of Lab 8 to give you feedback on the scope of your project.
-
-
Hardware and Tools:
-
We’ll continue to provide access to an NVIDIA RTX 4000 Ada GPU which you can use to complete your final projects.
- We’re hoping that you’ll have more flexible access to this GPU than you’ve previously had through Telerun. You’ll be able to submit multi-file projects, provide your own input data files, control the build process, etc.
-
Additionally, you can use any other hardware you have access to.
-
All MIT students have access to the campus Engaging cluster, and potentially other resources run by ORCD. We do not manage these resources and can’t guarantee perfect availability, but it has often been feasible to access L40, H200, and other GPUs on Engaging. You’re welcome and encouraged to test it out.
-
You’re also welcome to use any non-NVIDIA accelerators that you have access to! For example, you could do a project involving FPGAs, or AMD GPUs, or various Apple Silicon accelerators. The key constraints are that the course staff won’t be able to provide the same level of support, and everyone on your team should have access to the hardware to be able to contribute.
-
-
You’re welcome to explore using higher-level CUDA libraries, as well as software tools beyond CUDA, such as CUB, CUTLASS, or Triton.
-
Proposals
Final project proposals should be 1-2 pages and submitted on Gradescope in PDF format, and should contain the following parts:
-
A list of team members.
-
Four sections, each of which consisting of 1-2 paragraphs:
a. Background: A brief summary of relevant papers, techniques, and libraries that you have found useful in coming up with your idea.
b. Implementation Plan: A summary of key milestones, deliverables (such as, but not limited to, algorithms you want to implement and performance benchmarks), and your plan to reach these deliverables.
c. Evaluation Plan: A summary of how you plan to evaluate your project (such as, but not limited to relevant performance benchmarks, integration into PyTorch), and how you plan to compare to existing implementations or state-of-the-art.
d. Hardware Availability: A summary of where you expect to do the development for your project. Are you planning to use Telerun for your development flow, or do you have access to other clusters where you plan to prototype and test your implementation?
Approval Process
After you submit your final project proposal, the course staff will try to get back to you within a few days to either…
-
Immediately approve your proposed topic, or…
-
Work with you to refine the scope of your proposed topic.
-
Advise you to try to move to a different topic or switch back to the advanced labs.
If the course staff doesn’t immediately approve your proposal, we will likely schedule a meeting with members of your team to discuss ways your proposal could be modified to better fit the scope of this project. If you choose to continue with the project, after the course staff has worked with you to develop a revised proposal, you can consider your proposal approved and can start working on your project.
All correctly-formatted project proposals submitted before the October 27th deadline will receive full credit for the proposal component of the final project, regardless of whether or not they are immediately approved.