with what solution to start


I like start with GPU programming. I like to know what are different between brook+ and CUDA?

and what is the best solution to start with paralle programming.


Hi, and welcome.

I don’t know much about Brook. CUDA is more C-like and a bit more “concrete”. It maybe also supports more flexible memory access patterns, but I really don’t know much … someone else will say more, I believe.

Regarding the start - I began with trying to understand the “matrix multiplication” example in the CUDA Programming Guide, Chapter 6. Then, the “reduction” code and the “convolutionSeparable” samples were A) hard to understand at first, B) very useful once I understood.

Good luck!

in simple words,
brook+ : AMD-GPUs :: CUDA : NVIDIA-GPUs

but, its very difficult to tell which is better. both have their pros and cons.

They both are C extensions to harness the power of their respective GPUs.

brook+: [url=“http://ati.amd.com/technology/streamcomputing/AMD-Brookplus.pdf”]http://ati.amd.com/technology/streamcomput...D-Brookplus.pdf[/url]
CUDA: [url=“http://developer.download.nvidia.com/compute/cuda/2_0/docs/NVIDIA_CUDA_Programming_Guide_2.0.pdf”]http://developer.download.nvidia.com/compu...g_Guide_2.0.pdf[/url]

I have a feeling there’s a lot more to it than that. It is “very difficult to tell” because it seems like no one’s used both on this forum.

I’m also very interested in getting some information on this.

However, isn’t brook+ being phased out in favor of OpenCL? Or at least it will be secondary.

I’ve used both, but I probably don’t count :P

Brook+ is definitely more GLSL-oriented, while CUDA is a lot closer to straight C. If you look at the documentation (which makes the CUDA documentation look 100% complete in comparison), specifically at the optimized matrix multiply, you’ll see that it makes really heavy use of vectors and swizzling in order to achieve good performance. It also used to be a more restrictive programming model than CUDA, largely because there was no shared memory, but I’m not sure if they’ve updated Brook+ yet to use RV770’s shared memory (I’m honestly not sure how shmem fits into Brook+'s streaming model anyway).

Of course I haven’t used brook+. However, from the ‘web’ I’ve read people (who have used both of them) say that both platforms have their own pros and cons and its just a matter of how convenient you are with which platform.

However from tmurray’s statement it seems that CUDA has an upper hand :)

Am I right tmurray? :)