I have two independent tasks I need completed, and I was wondering if either would be a good candidate for a CUDA solution. I have no knowledge of opengl or graphics programming, but I have spent the past day looking into how they work and have a strong knowledge of programming in general.
As I see it I have 4 options for each of my two tasks:
- Leave it in Matlab
- Port it to C for some speed gains
- Use some combination of C and opengl (not sure how this works, it was an option others have suggested to me)
- Use something like CUDA and run it on the graphics card
Any advice on what would be best would be greatly appreciated. Reasoning as to why and any tips at where to start would also be appreciated.
I have a voxel(pixels in 3 dimensions) space I need to fill with values. Each voxel can be computed independently so I think this is a good candidate for parallelizing. The total voxel space will no doubt be too large to store at once, so can parts be periodically written out to a file? The equation for each voxel is of the form: output[y][z] = log(constant* sum_over_all_i( e^(distance_between_x-y-z_and_each_of_the_i_points))) where the i points is a constant list of 3d points.
Given a voxel space I need to rotate it some theta degrees around a vector v. This is where someone pointed me towards opengl, because I do not even have a good solution for this in matlab yet. The problem is that when rotating by anything other than 90,180,etc. degrees, the end locations of each voxel are not integers so an interpolation needs to be done. This is a common problem with image rotation in 2 dimensions for example. Are there any built in functions in the graphics community that can help me with this?
Thanks for any help.
Oh and for what its worth I have an 8800gts, but if prelimiary results look good I might be able to get some grant money to throw several machines at the problem.