Final Project
Deadlines:
Team Formation: Thursday May 1, 2025
Project Report, Demo video and Code Due: Tuesday, June 10, 2025
Requirements:
- Team of 1 - 3 students
- Final project report detailing implementation and results
- Final ~10 minute presentation
- Open-ended project topics. "Make something faster!" or "Make something more efficient on GPU" or "Let's try building something with emerging new GPU programming frameworks"
Final Project Meeting Checkpoint
There will be no lecture on 5/22 and 5/29 to give you time to work on your Final Projects. (You have started, right?? ) In lieu of lecture, I will hold extended office hours on these Thursdays where you can reserve 15-minute slots with your group to discuss any details of your final project. Reservation time slots on Friday and Monday will be with Sara during her office hours or discussion times.
These meets are optional, but highly recommended. Otherwise, you're free to ask questions in your Discord project channel. Please don't start your final project the weekend before it's due. 🙂
https://tidycal.com/danx255/cs-ee147-final-project-checkpoint
Project and Team Formation
Due Thursday, May 1, 2025
Once you form a team, make a post in the 147 Discord server's forum-discussion with the "Project" tag with the following information:
- Team members:
- Team name:
- Proposed project idea:
- Required libraries or framework?
- Any potential risks or technical problems/challenges?
-
What is your plan/outline of your project?
Once you have done so, I will create a private channel for your team members with the course instructors/TAs. We will discuss and iterate on your project ideas until you get approval.
Once you have formed your group join the following Github Classroom assignment and create a repo for your group: https://classroom.github.com/a/5-zirqst.
Project Deliverables
Project report
Project Report and Code Due: Tuesday, June 10, 2025
For the Final Project report, you can use any template you like.
There is no page minimum for the final project report. Therefore, the length should be long enough to sufficiently cover the information requested, but not too long that you require rambling filler sentences.
In general, the project report closely follows the presentation requirement, but with more documentation and complete implementation/results. The report should at a minimum include the following:
- Title page with project name and team members
- Project Idea / Overview
- How is the GPU used to accelerate the application?
- Examples of this includes:
- Details related to the parallel algorithm
- How is the problem space partitioned into threads / thread blocks
- Which stage of the software pipeline is parallelized
- Implementation details
- Documentation on how to run your code
- Evaluation/Results
- Problems faced
- On the last page, include a table with a list of tasks for the project, and a percentage breakdown of contribution of each team member for the tasks. You can choose the granularity of task breakdown here.
| Task | Breakdown |
|---|---|
| Implementation of Feature 1 | Tommy Trojan - 100%, Joe Bruin - 0% |
| Implementation of Feature 2 | Tommy Trojan - 99%, Joe Bruin - 1% |
| Project Report | Tommy Trojan - 95%, Joe Bruin - 5% |
Once you have formed your group join the following Github Classroom assignment and create a repo for your group: https://classroom.github.com/a/5-zirqst. The repository that will be created is empty since this is an open-ended project. You will use this repository to submit your final project with the deliverables below. Therefore, the report and source code should be pushed to your project's Git repo.
Presentation
Due: Tuesday, June 10, 2025
Students will submit a pre-recorded presentation instead of a live presentation during classtime
The video should be ~10 minutes in length. It's not a hard requirement, so don't feel the need to make the video longer if you don't need to.
The main points to cover in the presentation are:
- Discuss your high-level project idea.
- How you are implementing / How you are using the GPU?
- Progress / Results / Lack thereof...
- Short demo
You can either (1) upload this on Youtube and include a link in your report or repo, or you can (2) upload this to YuJa and share the video with us, making a note of this in your report or repo.
Project Ideas
- Build a simple back propagation NN from scratch, without using any libraries. Apply various optimizations you learned in class, such as tiling, privatization, etc.
- Implement a molecular dynamic application. Visualize it in real-time with OpenGL or other graphics framework.
- Speedup signal processing applications using CuFFT.
- Compare performance of various parallel algorithms using CUDA, OpenCL, OpenMP, HIP, C++, Numba, CUDA Python etc. Explore performance and productivity tradeoffs of various low-level GPU programming languages.
Example projects from prior years:
- CUDA acceleration in Matlab
- Implement LeNet CNN in cuDNN, Keras, and Tensorflow. Perform performance comparison between implementations
- Particle Simulation using CUDA and OpenGL
- Using the Jetson board for computer vision
- Algorithm comparison with different GPU langauges, such as Numba, OpenACC, Modern C++.
- Accelerate procedural generation of maze generation game
- Port various senior design projects to use GPUs