Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

Journeyman III

Brook+ Vs OpenCL - what to choose?


Hi everyone,

This is my first post here, and I would like to start off with a request for some advice.

I am about to start working on my university thesis which is a university time table scheduler.  I plan to use a genetic algorithm to solve the bulk of the problem.  Since this is a highly parallel search problem, I figured it would be a good candidate for speed-up on GPU.

Having explored both Brook+ and OpenCL examples, I am faced with a decision on what development platform to choose.  

From background info on forums and such, my impression is that Brook+ is faster than OpenCL.  It also seems to be easier to work with.  But Brook+ appears to be abandoned, permanently left in a beta stage.  OpenCL is definitely the way forward, but I'm afraid of being an early adopter.  It seems that Stream SDK2.2 has a number of reported bugs in OpenCL.  I don't wish to end up fighting platform bugs as my hands will be full with my own application's bugs.

Can anyone with insight suggest a target platform or argue about the merits of each?  For the record my development machine is running Windows 7 64-bit, PCIe 1.1 and HD5770.  I have a test machine running Windows XP 32-bit, PCIe 1.1 and HD2600Pro.

My current opinion is this:


OpenCL (SDK2.2):

+ It is (an emerging) standard

+ Code is easily targetted to CPU or GPU

+ It can interoperate with .Net (Cloo)

+ Tested with VS2010

- Does not support old GPU (HD2600)

- Not mature enough

- Code seems more complicated than Brook+



+ Supports all my hardware (HD2600Pro, HD5770)

+ Seems easy to use

+ Appears to be more efficient than OpenCL

+ I am not aware of anyone complaining of bugs

- No .Net bindings

- Non-standard

- Project appears abandoned

- Projects are for VS2008 (I use VS2010)


Thanks for reading, and any advice or suggestions would be greatly welcome!



3 Replies

hi edwin.cini,

Nice to hear your thoughts on openCL and brook+.

In my opinion OpenCL would be a better choice.Here are a few reasons:

Brook+ is easier becoz it is more high level,but you can acheive better optimizaton using OpenCL.

You can get support for openCL from all the major multocore processor manufacturing companies including AMD.

Obviously current implementation has  some bugs,but due to stiff market competition the implementations are improving at a very impressive rate.Anyhow brook+ is also not completely bug free.

I hope it helps.

All the best for your project.


Hi Himanshu,

Thanks for your reply!  It was what I hoped to read, and it got me started in OpenCL.

After watching the ATI OpenCL videos and going through the tutorial on, it turns out that  things are simpler than I had thought.

OpenCL does require a fair amount of boilerplate code for host setup, but once that's out of the way, actual OpenCL code appears to very straightforward and logical.



hi edwin.cini,

Welcome to the  OpenCl community.