Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我对CUDA数学库sqrt()函数的调用失败?_C++_C_Math_Cuda_Square Root - Fatal编程技术网

C++ 为什么我对CUDA数学库sqrt()函数的调用失败?

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

我是Cuda的新手,我有以下功能:

__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);