cpp wrapper for opencl