Avr*_*dis 6 c c++ math cuda square-root
我是Cuda的新手,我有以下功能:
__global__ void square(float *myArrayGPU)
{
myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);
}
Run Code Online (Sandbox Code Playgroud)
我想使用cuda数学库,我试过,#include "math.h"但我仍然得到错误
error: calling a __host__ function("__sqrt") from a __global__ function("square") is not allowed
知道我应该包含哪些库来使用sqrt?
Har*_*rma 19
threadIdx.x是int类型.CUDA数学库仅针对单精度(float)和双精度(double)重载.您需要为要调用sqrt()的CUDA版本提供'float'或'double'类型参数sqrt().
更改
myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);
Run Code Online (Sandbox Code Playgroud)
成
myArrayGPU[threadIdx.x] = sqrt( (float) threadIdx.x);
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看CUDA sqrt()原型文档.