Hi, I'm a CS undergrad student and wanted to finalize my project idea soon.I am mostly interested in graphics based projects which work with help of GPUs like GPGPUS (http://en.wikipedia.org/wiki/GPGPU) or actual graphic processing using GPUs.My supervisor suggested me to look for topics related to parallel computing like in GPGPUs and 3dUI as in the iphone.So far some of the ideas we have come up with are related to enhancing the images taken from camera phones or Augmented reality(i personally think that they are difficult to complete in a years time frame).I am expected to work mostly using CUDA(nvidia). Open to ideas specially those which work on mobile devices.
One idea I've had is a scheduling optimizer. If your are creating a schedule for classes or for a conference, and you know everyone's preferences for sessions, then you can calculate the optimal schedule which will allow the most people to attend the classes/sessions they want. This is one example of a parallel computing application.
For other computationally intensive problems, I suggest you look at Wikipedia's list of NP-Complete problems.
How much time can you spend on this? How much knowledge do you have about stream programming / SIMD?
Beware that this topic takes quite some time getting used to. If that's completely uncharted territory to you, calculate at least two months of experimenting just to understand how it all belongs together. More, if you want to write efficient code that harnesses the strengths of the GPU (raw computational power, concurrent execution) and avoids its weaknesses (low memory, slow loading, no cache).
Given your level of knowledge about the field, I would be sure to aim low. This is not meant to be an insult, but CUDA takes several months to become proficient at. Budget at least 3 to 4 months to build up the knowledge necessary to write CUDA programs that get the most performance out of your GPU.
Next, you really need to have a an idea of what you want to do. GPU programming is already applied in a wide range of applications: fast numerical solvers, computational fluid dynamics, image processing, ray tracing, game physics, and molecular dynamics simulations are a few. Take a look at the CUDA webpage for many examples of what it can be used for.
- Ray tracing
- Volume rendering (Check brainweb for sample data)
- Deconvolution
- Video analytics (beyond simple ME)
- Subsets of computer vision apps