This seems to be an interesting problem, but unfortunately I couldn’t reproduce this issue.
I used your code and the provided data, but the differences on my system seem to be alright.


Also, printing the unique values for diff gives:
np.unique(diff, return_counts=True)
(array([-1.1920929e-07, -5.9604645e-08,  0.0000000e+00,  5.9604645e-08,
         1.1920929e-07], dtype=float32),
 array([    765,  441331, 3331571,  101474,       2]))

which is in the expected floating point precision range.
I’m using a 1080Ti, 418.56  driver and CUDA10.1.