CS 179 Spring 2023

GPU Project Information for CS179

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.

Due Dates

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.

Sample Project Ideas

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.

Proposal

The proposal should include the following information: Your project proposal should be submitted to all of the TAs via email (please include all 3 TAs), and we will respond with feedback on the proposal and approve the project if the proposal meets requirements. Do not start working "in detail" on your project until your proposal is approved.

Proposals should be sent to the TAs by Tuesday May 9, 2023, along with Lab 5.

CPU Demo

Since debugging on a GPU can be challenging, we are requiring that you provide a CPU-based version that can serve as a proof-of-concept or baseline.

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_2023_submission.zip in your home directory.

The CPU demo is due on Friday May 26, 2023. If you need more time, contact a TA.

Project Turn-In

The project turn in should include all code that was written for the project (i.e. both CPU and GPU), as well as a comprehensive readme file that outlines everything the TAs need to know about the program.

The readme should have the following information:

The project should be turned in by zipping the code and readme into a file named final_project_2023_submission.zip in your home directory.

The project and writeup are due on Friday June 9, 2023 for seniors and grad students and on Friday June 16, 2023 for everyone else. Extensions cannot be granted for these due dates, because final grades are due to the Registrar shortly after this.

Resources

Starting after week six, on and after Monday, May 15, 2023, regular MWF CS179 class sessions are finished for the quarter. Ending weekly classes and weekly homework gives you more time to focus on your four week project.

In addition, starting that week, TA office hours will 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.