I'm looking into CUDA header file cuda/6.5.14/RHEL6.x/include/math_functions_dbl_ptx1.h
and see that every arithmetic function that takes a double
argument casts it into float
:
static __forceinline__ double fabs(double a)
{
return (double)fabsf((float)a);
}
...
static __forceinline__ double floor(double a)
{
return (double)floorf((float)a);
}
Since I rely in essential way on double precision floating point (there are quite a few potentially catastrophic cancellations in the code) I have some trouble believing my own eyes.
Could you explain what's going on here?