Laetus is a C++ Framework that aims to alleviate the burden of programming in plain OpenCL C. It has been developed (and it's still in active development though) at the College of Engineering of the Roma Tre University
To whet your appetite, take a look to the code below:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* Compute the Mandelbrot Set */
 
int width = 1024;
int height = 768;
GPUComm comm;
Tuple<int> t1(width, height);
Tuple<int> t2(0, width);
JobMap map(2,t1,t2);
CommandQueue<NDRange> queue(comm, map);
 
std::string src("Mandelbrot.cl");
Program program(comm, src);
queue.registerProgram(program);
 
int numElem = width * height * 3;
Buffer<char> image(queue, DataAccess::ReadWrite, numElem);
queue.setArgument<char>("render", image);
queue.run("render");
 
write_bmp("output.bmp", width, height, &image[0]); //external

This code, in plain OpenCL C, would have been more verbose and complex.