clint3112 is right, you are just recording the time taken by the GPU to execute the kernel. If you want the time taken to transfer data, you need to time the clEnqueuWriteBuffer command using CPU timers since you have chosen a synchronous transfer. Use events to profile data transfer when using asynchronous transfers.