作者:EDDSJZ紅葉 | 来源:互联网 | 2022-11-27 07:40
1> talonmies..:
为什么我对这个琐碎代码的编译失败了?
因为您必须指定支持这些功能的编译体系结构,否则它们是未定义的:
$ cat nvnvnv.cu
#include
#include
using namespace nvcuda;
int main(void){
return 0;
}
$ nvcc nvnvnv.cu
nvnvnv.cu(3): error: name must be a namespace name
1 error detected in the compilation of "/tmp/tmpxft_00005444_00000000-8_nvnvnv.cpp1.ii".
默认编译架构sm_30
在我正在使用的编译器上(CUDA 9.2).指定正确的体系结构会使错误消失:
$ nvcc -arch=sm_70 nvnvnv.cu
$
引用你的(非常有用的)CUDA 标签wiki:
如果您在编译设备代码时发现CUDA关键字出现语法错误,请确保使用nvcc进行编译,并确保源文件具有预期的.cu扩展名.如果您发现未找到CUDA设备函数或功能命名空间(原子函数,warp投票函数,半精度算术,协作组等),请确保显式传递编译参数,以启用体系结构设置支持这些功能.