CUDA fmod - 不允许从__global__函数调用__host__函数

Mar*_* A. 2 c++ cuda visual-studio-2012

我正在用VS2012编译一个CUDA 5项目,我收到了这个错误:

error : calling a __host__ function("fmod<float, int> ") from a __global__ function is not allowed
Run Code Online (Sandbox Code Playgroud)

编译器实际上使用math.h中定义的fmod使CUDA __device__ fmod不匹配

我怎样才能在它们之间"消除歧义"?

tal*_*ies 7

这是因为模板参数不匹配而发生的.您正在fmod使用浮点参数和整数参数进行调用.对于一对单精度或双精度浮点参数,只有一个设备模板参数(参见此处).

你可能正在寻找的是fmod(float, (float)int)....