CS179: GPU ProgrammingLecture 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
feature tracking stereo reconstructionhttp://www.cs.unc.edu/~gallup/cuda-stereo/
(do not copy source code)
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