I am new to Cuda, I have the following function:
__global__ void square(float *myArrayGPU)
{
myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);
}
I want to use the cuda math library, I tried to #include "math.h"
but I still get the error
error: calling a __host__ function("__sqrt") from a __global__ function("square") is not allowed
Any idea what library should I include to use the sqrt
?
threadIdx.x
is of type int. CUDA math library is overloaded only for single precision (float
) and double precision (double
). You need to supply either a 'float' or 'double' type parameter tosqrt()
for the CUDA version ofsqrt()
to be called.Change
into
For more detailed information, take a look at the CUDA sqrt() prototype documentation.