【发布时间】:2013-09-14 22:23:03
【问题描述】:
我在 Visual Studio 2012 中使用 CUDA 5.5 和 Nvidia 提供的文件“FLOAT_UTIL_DEVICE.HCU”中遇到此问题。根据类似的问题,可能是代码结构的问题,但我看不到任何问题:
#include <vector_functions.h>
#include <device_functions.h>
//// ADDED BY ME FOR TEST PURPOSES
//inline __device__ float uint2float( unsigned int a )
//{
// return (float) a;
//}
//// END
inline __device__ float2 uintd_to_floatd( uint2 a )
{
return make_float2( uint2float(a.x), uint2float(a.y) );
}
inline __device__ float3 uintd_to_floatd( uint3 a )
{
return make_float3( uint2float(a.x), uint2float(a.y), uint2float(a.z) );
}
inline __device__ float4 uintd_to_floatd( uint4 a )
{
return make_float4( uint2float(a.x), uint2float(a.y), uint2float(a.z), uint2float(a.w) );
}
根据 Nvidia 文档,相关方法应在“device_functions.h”中定义。如果我取消注释测试代码(它定义了缺少的函数),我会收到一个新错误:“重载函数“uint2float”的多个实例与参数列表匹配”;因此不知何故它已经被定义了。我错过了什么?
【问题讨论】:
-
您是否尝试在它们之前添加命名空间?
-
请发布完整的错误信息。
-
@Peter: "error C3861: 'uint2float': identifier not found" 是完整的错误信息。
-
真的吗?没有行号?没有说明它在哪个文件中?
-
第 28 行是什么?您是否尝试从主机代码编译它?你从哪里包括它?您的编译器是否设置为首先通过 NVCC 运行?