half working for opencl and cuda