Has anyone done much research or development with nVidia's new CUDA technology?
Read: What is CUDA?
I'm wondering what could be done with the technology and where it can be applied in games...
Has anyone done much research or development with nVidia's new CUDA technology?
Read: What is CUDA?
I'm wondering what could be done with the technology and where it can be applied in games...
Well according to nvidia we could make some pretty outstanding stuff: better graphics (maybe 128x anti-aliasing...) bloom, physics and etc... Without a cpu. So, you sure you want a cpu for your board? Nah just a GPU...
Frankly though, I find cuda a little niche and obscure to code in, since you have to assume that every client has the right OS, card and motherboard for it to work. shame.
I once tried to change the world. But they wouldn't give me the source code. Damned evil cunning.
Well the (proper! lets not get into that again... ) graphics drivers would add in support for the CUDA features of the card, no?
And how does one have a computer run without a processor? You don't happen to have a USB plug sticking out of the back of your head do you?
I for one would like to see some of our very talented folks (Luuk, Sascha, Nitro or the NECROubers) give a quick demo a try. I'm sure I'd be amazed at what they manage to do.
CUDA is like openCL?
OpenCL has a very similar design with CUDA's "driver API". CUDA also has a "CUDA C" compiler (nvcc) which is basically a preprocessor that takes an enriched C, generates code that uses the "driver API" and uses a real C compiler (GCC or MSVC) to compile the code.
Personally i tried to use CUDA back when my GTX280 was brand new and it was nice. For parallelism-friendly algorithms, such as raytracing, the speedup can be huge (i made a test which had 2-3fps in CPU using C and 560+ fps in CUDA).
I also tried to use it with Lazarus:
This is basically the same test, slightly modified. The raytracer itself is written in "CUDA C" and linked with the Lazarus which does the presentation (it is slower because i'm downloading the image i get from CUDA to the CPU and upload it back on the GPU using Lazarus' OpenGL control while the C version didn't do that part - i don't remember why i did that in Lazarus though... it has been like two years since i wrote that).
However personally today i would use OpenCL instead. It is the proper open standard, more widely supported than CUDA and some configurations (like those from AMD and Apple i think) can use both the CPU and GPU at the same time.
OpenCL and CUDA are both similar and different. I will be responsible for the GPU part of a course later this fall, where we primarily teach CUDA. Why CUDA and not OpenCL? Because CUDA is a million times easier to get started with. CUDA has a very neat integration between CPU and GPU code, while OpenCL looks more like an OpenGL/GLSL program.
But OpenCL is more open. CUDA can only be used from NVidia's own compiler (which uses GCC for the CPU part). OpenGL can be used from anything, FPC included. (I have working examples using FPC.) The kernels are quite similar between CUDA and OpenCL, but must, sadly, be written in C syntax.
Bookmarks