C++ CUDA fmod-不允许从全局函数调用主机函数

C++ CUDA fmod-不允许从全局函数调用主机函数,c++,visual-studio-2012,cuda,C++,Visual Studio 2012,Cuda,我正在使用VS2012编译CUDA 5项目,收到以下错误: error : calling a __host__ function("fmod<float, int> ") from a __global__ function is not allowed 错误:不允许从全局函数调用主机函数(“fmod”) 编译器实际上不匹配CUDA __设备_; fmod与math.h中定义的fmod 如何“消除”它们之间的歧义?发生这种情况是因为模板参数不匹配。您正在使用浮点参数和整数参数调

我正在使用VS2012编译CUDA 5项目,收到以下错误:

error : calling a __host__ function("fmod<float, int> ") from a __global__ function is not allowed
错误:不允许从全局函数调用主机函数(“fmod”)
编译器实际上不匹配CUDA __设备_; fmod与math.h中定义的fmod


如何“消除”它们之间的歧义?

发生这种情况是因为模板参数不匹配。您正在使用浮点参数和整数参数调用
fmod
。对于一对单精度或双精度浮点参数,只有一个设备模板参数(请参阅)


您可能要查找的是
fmod(float,(float)int)

是否包含math.h?没有,但可能包含在其他地方。这是一个大型项目,我只是其中的一部分。设备端不支持fmod(float,int)变体,因此编译器只能找到主机端版本,而不能从设备调用。CUDA支持以下重载变量:fmod(浮点,浮点),fmod(双精度,双精度)。将您的案例映射到其中一个案例应该很简单。