【发布时间】:2013-05-17 18:25:02
【问题描述】:
我正在使用 VS2012 编译一个 CUDA 5 项目,我收到此错误:
error : calling a __host__ function("fmod<float, int> ") from a __global__ function is not allowed
编译器实际上将 CUDA __device__ fmod 与 math.h 中定义的 fmod 不匹配
我怎样才能在它们之间“消除歧义”?
【问题讨论】:
-
你是否包含了 math.h?
-
不,但它可能包含在其他地方。这是一个大项目,我只是其中的一部分
-
设备端不支持 fmod(float,int) 变体,因此编译器只查找主机端版本,无法从设备调用。 CUDA 支持以下重载变体:fmod(float,float)、fmod(double,double)。将您的案例映射到其中之一应该是微不足道的。
标签: c++ visual-studio-2012 cuda