What is ULP?

The maximum relative error is defined as ulp (units in the last place).

The ULP is defined as follows:

If x is a real number that lies between two finite consecutive
floating-point numbers a and b, without being equal to one of them,
then ulp(x) = |b - a|, otherwise ulp(x) is the distance between the
two non-equal finite floating-point numbers nearest x. Moreover,
ulp(NaN) is NaN.

OpenCL spec @ https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf#page=319

Read More: