C++ 为什么我对CUDA数学库sqrt()函数的调用失败?
我是Cuda的新手,我有以下功能:C++ 为什么我对CUDA数学库sqrt()函数的调用失败?,c++,c,math,cuda,square-root,C++,C,Math,Cuda,Square Root,我是Cuda的新手,我有以下功能: __global__ void square(float *myArrayGPU) { myArrayGPU[threadIdx.x] = sqrt(threadIdx.x); } 我想使用cuda数学库,我试图#包括“math.h”,但仍然得到错误 错误:不允许从全局函数(“square”)调用主机函数(“sqrt”) 知道我应该包含什么库来使用sqrt?threadIdx.x类型为int。CUDA数学库仅针对单精度(float)和双精度(doubl
__global__ void square(float *myArrayGPU)
{
myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);
}
我想使用cuda数学库,我试图#包括“math.h”
,但仍然得到错误
错误:不允许从全局函数(“square”)调用主机函数(“sqrt”)
知道我应该包含什么库来使用
sqrt
?threadIdx.x
类型为int。CUDA数学库仅针对单精度(float
)和双精度(double
)重载。要调用CUDA版本的sqrt()
,您需要向sqrt()
提供“float”或“double”类型参数
改变
myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);
进入
有关更多详细信息,请查看。
sqrt
需要一个浮动类型变量。请尝试sqrt((float)(threadIdx.x))
好答案,但不幸的是,Harshil Sharma在“教科书版”上击败了您……:-)
myArrayGPU[threadIdx.x] = sqrt( (float) threadIdx.x);