Add OpenCL type abstraction