The results from the code with my machine is:
GPU before warmup
0.269862890244
GPU after warmup
0.00235605239868
GPU just launch time
0.00227999687195
CPU
2.8133392334e-05

This means:

The first gpu call of you program perform initialization of your gpu (warmup) and thus takes few hundreds of ms (or more if you have many gpus).
Then the actual execution time whenever you’re gonna run this line of code is 2ms in this case.
The third timing does not wait for the device to finish it’s computation so it just measures how long it takes to ask for the operation to be done to the GPU.
The last one is CPU time.

In this case, for the gesv operation, performing the operation for such small matrix has a high overhead on the GPU.