Added opencl implementation