CS179: GPU Programming Lecture 16: Final Project Discussion
Today • Final Projects
Recap • Week 1: Why GPU? • Week 2: Learning & Optimizing CUDA • Week 3: CUDA Memory • Week 4: CUDA and OpenGL • Week 5: GPU Accelerated Libraries • Week 6: Waves on the GPU • Week 7: CUDA and MPI • Week 8: Projects • Week 9, 10: Special topics?
Final Project • Self-designed lab • Everything is up to you • Should be about same complexity as labs 3-7 • Basing project on existing lab might help • 300 points (30% of final grade) • Due Friday, June 6th • There will be no extensions w/o Dean’s approval!
Project Ideas • Image Processing
Project Ideas • Computer Vision -- Look into OpenCV • Will be difficult without your own rig stereo reconstruction http://www.cs.unc.edu/~gallup/cuda-stereo/ (do not copy source code) feature tracking
Project Ideas • Geometry Processing marching cubes (reference in SDK, don’t copy code)
Project Ideas • Fluid Simulations • Check out NVIDIA GPU Gems, SDK, etc. • Lots of resources online! • As always, don’t directly copy code
Project Ideas • Raytracing
Project Ideas • Sorting • Nothing graphical required here • Will probably be pretty simple in design, but lots to explore • Focus on optimizations, memory, etc. • Algorithm and implementation should be robust!
Project Ideas • Many, many more… • Feel free to do what interests you • Try to keep scale reasonable • Talk to TA if you’re stuck!
Step 1: Design • What problem are you trying to tackle? • Why will GPU-parallelism work for your project? • What will each thread do? • How will memory be handled? • What sort of CPU overhead do you need? • Will any lab help here?
Step 2: Writing the Lab • Easiest to start using an existing lab (but not necessary) • Labs 3 and 4 might be useful for graphics applications • Check other code for useful timing, etc. code • Focus on good memory management • Good memory accessing, using shared instead of global, etc. • After design, project should fall into place • Most GPU algorithms are simple (because GPU threads are simple!) • Again, talk to a TA if you’re unsure where to go
Step 3: Analyzing the Project • README required, should contain: • Brief description of project • Any compilation instructions, external libs, etc. • Answer 3 questions from design phase: • Why does GPU help here? • What work does one thread do per kernel call? • What sorts of considerations did you make regarding memory? • Benchmark performances -- do these meet your expectations? • All this will be in the project website writeup
Schedule • Today: Project introduction • This week’s OH: Lab 7 • This week Wed/Fri: Final Project help • Mini-OH during class time: if you need consultation for a project, feel free to swing by • Next weeks: Special topics in GPU programming • GLSL, OpenCV, etc. • Next weeks’ OH: Final Project • Project Due: June 6th