added OpenCL support