C++ OpenCL framework