Brook+ Vs OpenCL - what to choose?

Discussion created by edwin.cini on Sep 18, 2010
Latest reply on Sep 22, 2010 by himanshu.gautam


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!