You will be given about four weeks to design and implement a GPU-coded project of your choice, working alone or in pairs. The project (and perhaps sometimes even teams of three?) must be approved by a TA, where team projects need a more substantially-sized project.
If you do choose to work with others, we will expect a proportional increase in the project's scope. A rule of thumb is to have at least one CUDA module per person. The project and the proposal need to explain which person did which work on the project, in addition to denoting the parts of the work that were mostly joint.
For example, a two-person team could create a raytraced visualization of an N-body simulation. In this case, one person could write a CUDA based raytracer and the other person could write a CUDA based N-body simulator. The project will note which person did which parts of the work.
Below are the due dates for the components of the CS179 project. Items should be turned in no later than 11:59 PM Pacific on the day listed.
There are very few topic restrictions on what you could do for your project. To get you thinking about what you could do, here are some past projects.
Remember that it's ONLY a four week project, so it can't be super large. But it shouldn't be trivially small, either. But it can be built on top of or relate to other work that you are already doing say, in your research or in another course. The GPU part of the work is the part for your CS179 project.
Proposals should be sent to the TAs by Wednesday May 10, 2024, along with Lab 5.
Depending on the project, your CPU demo could be one of several things: If you are building something from scratch, the CPU demo should have all of the features of the GPU version so that they can be compared against each other. Your CPU code should be commented to include information on how the code will be parallelized.
If you are creating a GPU version of an existing CPU-only library/application, your CPU demo should include tests to verify results from the GPU code you implement. The tests should be commented to describe what they verify.
In either case, you should also include instructions for how the demo can be run and what result is expected.
The CPU demo should be turned in by zipping the code and instructions into a file named cpu_demo_2024_submission.zip in your home directory.
The CPU demo is due on Friday May 26, 2024. If you need more time, contact a TA.
The readme should have the following information:
The project and writeup are due on Friday June 9, 2024 for seniors and grad students and on Friday June 16, 2024 for everyone else. Extensions cannot be granted for these due dates, because final grades are due to the Registrar shortly after this.
In addition, starting after that week, TA office hours will likely be held by appointment.
If you would like to work with and get interactive help from a TA, please contact a TA directly to schedule a time, or you can email all of the TAs with your availability, and the one who is available soonest will schedule a time with you. You can also ask questions on Piazza, of course.
Note that you will likely find the CUDA Programming Guide useful as you work on your project. The CUDA Documentation will also be useful for answering questions about the various CUDA libraries.