Cuda 整数内部函数未定义

Cuda 整数内部函数未定义,cuda,Cuda,E0020标识符“\uu ffs”未定义 对于所有不同的整数内部函数也是如此 失败的代码(它是一个方法定义;类定义了x,y,z): 我也尝试过这一点(在我添加\u ffs行之前,一切都正常: __global__ void addKernel(int* c, const int* a, const int* b) { int i = threadIdx.x; c[i] += a[i] + b[i]; int foo = __ffs(i); } 前面的一个问题是关于int

E0020标识符“\uu ffs”未定义

对于所有不同的整数内部函数也是如此

失败的代码(它是一个方法定义;类定义了x,y,z):

我也尝试过这一点(在我添加\u ffs行之前,一切都正常:

__global__ void addKernel(int* c, const int* a, const int* b)
{
    int i = threadIdx.x;
    c[i] += a[i] + b[i];
    int foo = __ffs(i);
}
前面的一个问题是关于intellisence的。在我的例子中,nvcc编译器也没有看到它们

根据CUDA文件:

1.9.整数内部函数 本节介绍仅在设备代码中支持的整数内在函数。要使用这些函数,您不需要在程序中包含任何附加头文件


我正在使用Visual Studio Community 2019,CUDA 11.2.0,这确实很奇怪。我添加了以下行作为实验:

#define __CUDACC__
修正了,但给了我一个警告:

warning C4005: '__CUDACC__': macro redefinition
我真的不想就这样离开,因为我不清楚库达奇到底在做什么


奇怪的是,当我删除了#defineCUDACC时,问题没有回来。现在一切都正常了。神奇。或者Visual Studio为我默默地做了一些事情。当Microsoft做这种事情时,我很担心,但这次我不会抱怨。:

E0020是Visual Studio错误,而不是nvcc错误。您是否真的在正确设置的CUDA项目中的.cu文件中执行此操作?是的,它是一个.h文件,包含在基于VS向导中的新CUDA项目的.cu文件中。在添加行之前,代码在我的设备上编译并运行。但有趣的是E0020是一个VS错误。在VS中,有两个日志需要注意,错误日志和控制台日志。如果您将来询问VS构建失败,我的建议是,包含由build命令生成的完整控制台日志。这将给别人最好的能力来帮助你。在这里提取单行的单个部分(如果您这样做的话):
e020标识符“\uu ffs”未定义
不太有用。如果您真的从错误日志中取出了它(通常只有一行这样),那么您可能会被Intellisense错误所迷惑,具体取决于日志设置/下拉列表
warning C4005: '__CUDACC__': macro redefinition