split opencl functionality into a separate header.