add some OpenCL utility classes; they might need some more revision