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+
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!
Edwin